トップページtech
1001コメント338KB

関数型プログラミング言語Haskell Part28 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/04/09(木) 08:31:01.42ID:4yjREsCN
関数型プログラミング言語 Haskell について語るスレです。

         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
      /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
      l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
      l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
     l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
     l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
     ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
    ヽ:::::    ̄ .)::;  l  ̄   l::::/    < 毛の壁(岡部健)の話は禁止な
     、:::::..   /:::; .,-、     l:::/、
    ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ
     l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
   l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
   l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\

haskell.org (公式サイト)
http://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part27
http://peace.2ch.net/test/read.cgi/tech/1420718555/
0002デフォルトの名無しさん2015/04/09(木) 08:33:16.96ID:4yjREsCN
関連サイト

(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
http://en.wikibooks.org/wiki/Haskell

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
http://learnyouahaskell.com/chapters

Real World Haskell (同名書籍の無料オンライン版)
http://book.realworldhaskell.org/read/

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
http://www.haskell.org/haskellwiki/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97

Haskell - Wikibooks (先述Wikibooksの日本語版。未編集の項目、多)
http://ja.wikibooks.org/wiki/Haskell

Programming in Haskell
http://www.sampou.org/cgi-bin/haskell.cgi

Haskell のお勉強
http://www.shido.info/hs/

Haskell Programming
http://www.geocities.jp/m_hiroi/func/haskell.html

本物のプログラマはHaskellを使う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/
0003デフォルトの名無しさん2015/04/09(木) 08:34:30.02ID:4yjREsCN
関連書籍検索一覧 (「米」は米国amazon、主に洋書。「日」は日本amazon、主に和書)

Keyword = "Haskell"
(米) http://www.amazon.com/s/rh=n:283155,n:3839,k:Haskell
(日) http://www.amazon.co.jp/s/rh=n:492352,k:Haskell

Keyword = "functional programing" (米) | "関数 プログラミング" (日)
(米) http://www.amazon.com/s/rh=n:283155,n:3839,k:functional%20programing
(日) http://www.amazon.co.jp/s/rh=n:492352,k:%E9%96%A2%E6%95%B0%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&;ie=UTF8

----
0004デフォルトの名無しさん2015/04/09(木) 08:52:46.19ID:6OGmwsxh
なんでこここんなに勢いあるの?
0005デフォルトの名無しさん2015/04/09(木) 12:37:43.43ID:SXMrA4Vi
新しいおもちゃ見つけて
はしゃいでるだけだよ
0006デフォルトの名無しさん2015/04/09(木) 18:23:19.49ID:M2ohLgg+
これが関数型にプログラミングに対するアレコレを防ぐ盾Haskellちゃんですか
0007デフォルトの名無しさん 転載ダメ©2ch.net2015/04/10(金) 00:05:35.97ID:rXOjr/Cy
>>1-2に不備や誤りがあり、その個所のみを正していくと見た目が煩雑になるので、
以下でまとめて書き改めておきます(>>3はそのまま使用)。
0008デフォルトの名無しさん 転載ダメ©2ch.net2015/04/10(金) 00:06:42.77ID:rXOjr/Cy
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part27
http://peace.2ch.net/test/read.cgi/tech/1420718555/
0009デフォルトの名無しさん 転載ダメ©2ch.net2015/04/10(金) 00:11:18.13ID:rXOjr/Cy
過去スレ一覧
26) http://peace.2ch.net/test/read.cgi/tech/1406436392/
25) http://peace.2ch.net/test/read.cgi/tech/1393313450/
24) http://toro.2ch.net/test/read.cgi/tech/1382705669/
23) http://toro.2ch.net/test/read.cgi/tech/1376111807/
22) http://toro.2ch.net/test/read.cgi/tech/1364009659/
21) http://toro.2ch.net/test/read.cgi/tech/1358702176/
20) http://toro.2ch.net/test/read.cgi/tech/1350428908/
19) http://toro.2ch.net/test/read.cgi/tech/1340760070/
18) http://toro.2ch.net/test/read.cgi/tech/1331902463/
17) http://toro.2ch.net/test/read.cgi/tech/1325510368/
16) http://toro.2ch.net/test/read.cgi/tech/1317958045/
15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/
14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/
13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/
12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/
11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/
10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/
09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/
08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/
07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/
06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/
05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/
04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/
03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/
02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/
01) http://pc.2ch.net/tech/kako/996/996131288.html
0010デフォルトの名無しさん 転載ダメ©2ch.net2015/04/10(金) 00:14:16.42ID:rXOjr/Cy
関連サイト
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
http://en.wikibooks.org/wiki/Haskell

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
http://learnyouahaskell.com/chapters

Real World Haskell (同名書籍の無料オンライン版)
http://book.realworldhaskell.org/read/

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97

Haskell - Wikibooks (先述Wikibooksの日本語版。未編集の項目、多)
http://ja.wikibooks.org/wiki/Haskell

Programming in Haskell
http://www.sampou.org/cgi-bin/haskell.cgi

Haskell のお勉強
http://www.shido.info/hs/

Haskell Programming
http://www.geocities.jp/m_hiroi/func/haskell.html

本物のプログラマはHaskellを使う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
http://gihyo.jp/dev/feature/01/functional-prog
0011デフォルトの名無しさん 転載ダメ©2ch.net2015/04/10(金) 00:28:02.86ID:rXOjr/Cy
以上、>>8-10、及び>>3が正しいテンプレです。

なお、>>9-10は(一部の専ブラを除き)URLがリンク化されていないと思いますが、2ちゃんねるの
新規制で1レス内の外部リンク数が制限されるようです(スレ立ての場合を除く?)。そこで当該URLの
一部分に数値文字参照を用いて回避したための産物です。ご了承を。
0012デフォルトの名無しさん2015/04/10(金) 03:29:01.19ID:KZNYLMbm
関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1428597032/
0013デフォルトの名無しさん2015/04/10(金) 06:51:05.28ID:CIf+UAaH
アホな質問でスマンが、
すごいhaskell本のp140 7章 木を植えよう の
treeInsert関数が 型引数a と 引数xを比較してるように見えるんだけど
haskell初心者の自分にしては意味不明なんだけど
どういう事なんだ。。。
0014デフォルトの名無しさん2015/04/10(金) 07:05:02.76ID:ZILiwe6J
関数型は銀の弾丸なのか?
0015デフォルトの名無しさん2015/04/10(金) 12:09:31.13ID:tgPQdxTN
おい、毛の壁のブログが更新されたぞ
なんか、脳内の関数型コミュニティーと戦っとる
0016デフォルトの名無しさん2015/04/10(金) 12:31:20.47ID:ff5t5Whl
>>13
aは型引数じゃなくてパターンマッチで用いてる方だと思われ
treeInsert x (Node a left right)
のa
0017デフォルトの名無しさん2015/04/10(金) 13:04:40.10ID:C/bkXAcX
次立ったんだ、乙
0018デフォルトの名無しさん2015/04/10(金) 13:18:21.19ID:y7KG2L/p
>>15
開いた口が塞がらない。
0019デフォルトの名無しさん2015/04/10(金) 13:18:42.90ID:apwty0cJ
ドン毛ホーテには風車がドラゴンに見えるんだよ
0020デフォルトの名無しさん2015/04/10(金) 13:50:13.44ID:R8l9PNq/
そんなものいちいち報告しなくてよろしい

>>13
そう見えて紛らわしいのでyに読み替えていい
0021デフォルトの名無しさん2015/04/10(金) 15:25:29.23ID:iRFxon+y
俺の友達の友達が、某まつもと氏と知り合いなんだけど、この前、岡部氏の事を高く評価されていた。
ちゃんと見てる人は見てるし、世界クラスにもなると岡部氏の記事が容易に理解できるんだろうね。
0022デフォルトの名無しさん2015/04/10(金) 15:27:33.90ID:iRFxon+y
おまえら関数型コミュニティのチャイルディッシュな発想からは
岡部氏のような創造には至らない
0023デフォルトの名無しさん2015/04/10(金) 19:43:04.83ID:/T7b06ac
このエントリの内容は概ね正しいの?

http://qiita.com/sct/items/44ed6fedb3c315e80705
0024デフォルトの名無しさん2015/04/10(金) 20:59:25.97ID:JUcvVYvq
もっとエンタープライズおじさんが好みそうな感じの売り込み方すれば流行る

Haskellは最先端の計算機理論にもとづいた
システム開発の効率化とプログラムの自動生成および
プログラムの標準化を実現する高機能な関数型言語です

・高速で高信頼性
コンパイル型言語のため高速なデータ処理が行え
型安全なため信頼性の高いプログラムが生成できます。
これによりシステムの信頼性・整合性が向上します。
さらに保守フェーズにおける効率化も実現します
0025デフォルトの名無しさん2015/04/10(金) 21:00:15.54ID:JUcvVYvq
・プログラミングレス
処理ではなくデータに対して注目し
どのように処理したいのか宣言的に記述を行います。
これにより設計書ベースでの業務プログラム開発を行う環境を提供します。

・ダウンサイジングへの対応
ホストコンピュータ、オフィスプロセッサだけでなく
UNIXマシンを実行環境とするソフトウェア開発が行える開発環境を実現できます
これにより異なるOSへのソフトウェア移植も容易に行えます

・業務に最適化した記述
単一の言語にて各種の業務に合わせた専用の記述形式を用意できるため
旧来の基幹システム開発のジェネレータ言語で問題になっていた
実際の業務との不整合のための非効率な作業を排除できます
0026デフォルトの名無しさん2015/04/10(金) 21:03:34.25ID:dP0/e/so
学習コストwwwwwwwwww
0027デフォルトの名無しさん2015/04/10(金) 21:09:22.58ID:JpfDZLA2
このスレは天才禁止
0028デフォルトの名無しさん2015/04/10(金) 21:18:45.46ID:JUcvVYvq
よし、学習コストが問題なら
COBOL風のDSLを書けばすべて解決するな!
0029デフォルトの名無しさん2015/04/11(土) 00:32:26.25ID:yKCF81vS
http://www.amazon.co.jp/dp/4798043761
この本がテンプレに入ってないとかにわかの集まりかよここ
0030デフォルトの名無しさん2015/04/11(土) 00:50:21.52ID:EIYF0vjB
>>24-25
こういう紹介されるとすげーつまんなそう聞こえるなw
0031デフォルトの名無しさん2015/04/11(土) 00:55:28.45ID:QE/0qqyV
Haskellerにエンタープライズしぐさが備わり最強に見える
0032デフォルトの名無しさん2015/04/11(土) 02:29:30.13ID:tV+Qw8l4
本スレ誘導
http://peace.2ch.net/test/read.cgi/tech/1428597032/
0033デフォルトの名無しさん2015/04/11(土) 05:25:12.70ID:3ysa7CQc
ハスケルって読むのこれ?
0034デフォルトの名無しさん2015/04/11(土) 14:47:55.18ID:7QTRUsgm
『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
http://www.amazon.co.jp/dp/4798043761/

名著の予感
0035デフォルトの名無しさん2015/04/11(土) 15:12:12.25ID:OMIW7dLX
Haskellはその本に関係ないじゃん
javascriptスレに貼りなよ
0036デフォルトの名無しさん2015/04/11(土) 17:35:37.54ID:BHEErXA4
Kaleidoscopeのチュートリアルやってるけどsoがリンクできねー
0037デフォルトの名無しさん2015/04/12(日) 12:14:23.85ID:1ufa80Mz
Halcyon使ってる人いる?
0038デフォルトの名無しさん2015/04/12(日) 12:31:57.57ID:ZMVnoNXo
諸君、議論したまえ
0039デフォルトの名無しさん2015/04/12(日) 17:48:53.46ID:c/eluCW1
>>37
公式HP見たが、結局何をするものなのかよう分からんかった。

Haskellで作られたアプリケーション専用のインストーラ?
0040デフォルトの名無しさん2015/04/12(日) 19:14:22.05ID:B8mBNkjP
データベース接続先などの外部設定ファイルを起動時に一度だけ読み取ってその後はその値を使いまわしたい
純粋関数型言語のHaskellらしい設計や解決法を教えてください
0041デフォルトの名無しさん2015/04/12(日) 19:37:41.19ID:1ufa80Mz
>>39
やっぱり?
俺も公式見たけど分からなかった

ググっても日本語まったく引っかからないけど
Cabalの公式ページで紹介されてるくらいだし使ってる人居るのかなって
0042デフォルトの名無しさん2015/04/12(日) 19:55:27.61ID:c/eluCW1
>>40
それは Configurations Problem といって、
アプリケーションを作る上で言語問わずぶち当たる問題。
(解決の難しさは言語によるが)

Haskell でもいくつか解法が提案されているから、ググってみて。
0043デフォルトの名無しさん2015/04/12(日) 21:33:01.14ID:skbmhi5R
>>40
起動時に読み込んで後は変更がないならunsafePerformIO使う。
0044デフォルトの名無しさん2015/04/13(月) 07:09:06.13ID:2F6fpEK8
154 名無しさん@ゴーゴーゴーゴー! 2015/04/11(土) 11:41:16.75 ID:XmyizTso0
わかってない奴多いけど、岡部がQiitaアカウントを剥奪されたのは、
間違ったことを書いたからではなく、批判と向き合わなかったからでもなく、

単にコメント欄に、他者の個人情報含めた暴露と、根拠のない言い、誹謗中傷レベルの言いがかりを名指しで続けたからだよ。
あそこで野田の名前出すか普通?
0045デフォルトの名無しさん2015/04/13(月) 07:16:38.90ID:WAzsEDwP
Haskell 初心者です。分からない事があるのですが、すごいHaskell本のp93の

import Data.List

wordNums :: String -> [(String,Int)]
wordNums = map (\ ws -> (head ws, length ws)) . group . sort . words

このwordNums関数がよく分かりません、wordNums関数を使う場合、何故String(=[Char]?)を渡してwords関数がちゃんと適用されるのでしょうか?
mapの定義は

map :: (a -> b) -> [a] -> [b]
map f xs = foldr (\ x acc -> f x : acc) [] xs

こんな感じだと思っているのですが、
それだとStringの一文字毎にfが適用されていく事になり全く意味が無いと思ってしまいます…(実際はちゃんと文字列に対するwordsになっているのですが)

日本語が分かりにくくて申し訳無いのですが、分かった方はどなたか解説して頂けたら頂けたら嬉しいです…
0046デフォルトの名無しさん2015/04/13(月) 07:51:32.36ID:sSjAttKF
>>45
その少し下の方に書いてある、ポイントフリーじゃない版を見れば
mapがどう適用されてるか理解できるはず
0047デフォルトの名無しさん2015/04/13(月) 10:17:44.49ID:gz5WXRUc
cabal build で自分でgccを使って生成した.soファイルをリンクすることってできますか?
ghcではghc ~.so --make Main.hs -o Mainでやっていたのですが、同じことをcabalで行う方法が分かりません
0048デフォルトの名無しさん2015/04/13(月) 13:56:46.50ID:H7xRrVnS
>>45
そこんところに適用されていく様子が書いてあるでしょ。
wordNums "wa wa wee wa"なら

words "wa wa wee wa"  → ["wa", "wa", "wee", "wa"]
sort ["wa", "wa", "wee", "wa"] → ["wa", "wa", "wa", "wee"]
group ["wa", "wa", "wa", "wee"] → [ ["wa","wa","wa"], ["wee"] ]
map (¥ws->(head ws, length ws)) [ ["wa","wa","wa"], ["wee"] ] → [("wa",3),("wee",1)]

で、一目瞭然だと思うんだけどなにが分かんないの?
ポイントフリーだから混乱してるとかそういう話?

wordNums xs = map (¥ ws -> (head ws, length ws)) $ group $ sort $ words xs

敢えて最後に引数補ってこう書いてあればわかったりするのかしら。
0049デフォルトの名無しさん2015/04/13(月) 15:56:16.90ID:5UiTPbcQ
これが巷で噂の新人君を三ヶ月で辞職に追い込んでいくスタイルだ。
だがちょっと待って欲しい、
>>48をスタイル抜群女パイセンの台詞に脳内変換してみるとどうだろう?
0050デフォルトの名無しさん2015/04/13(月) 18:51:08.84ID:H7xRrVnS
>>49
こんなんで辞職に追い込まれないだろw

で、>>45の疑問がわかった気がする。wordsNumの定義を
(f = ¥ ws -> (head ws, length ws) として)

map (f . group . sort . words)

だと思ってるんだな。
String(=[Char])に対して、合成された関数をmapしてるかのように読んでるんだろう。
正しい構文解析はそうではなくて

(map f) . group . sort . words

だというだけの話だ(関数適用の結合は関数合成演算子より強いのでそうなる)。
0051デフォルトの名無しさん2015/04/13(月) 20:18:57.06ID:mroSQvvT
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
これマジ読んでみ。飯噴出すから。
0052デフォルトの名無しさん2015/04/13(月) 21:05:27.45ID:WAzsEDwP
>>50
ありがとうございます!その通りで、おかげで完全に挙動を理解出来ました…!
>>46さんもありがとうございました!
0053デフォルトの名無しさん2015/04/13(月) 21:06:37.25ID:HtEQcKP3
>>51
噴き出したwww
0054デフォルトの名無しさん2015/04/13(月) 22:33:35.71ID:g1+aVity
Yesod の Yesod.Core.cleanPath 関数について2つ質問です。

1つ目
この関数はどのようなタイミングで呼ばれるのでしょうか。

2つ目
この関数の戻り値 Either [Text] [Text] 型の値(の [Text] の部分)に joinPath 関数が第3引数として適用されると考えて間違いないでしょうか。
0055デフォルトの名無しさん2015/04/13(月) 22:36:15.84ID:fLjhhhkx
だからkenokabeはhaskellもocamlもmlもcoqもscalaも一行も書けないんだから
このスレや関数型の言語のスレには全く関係ないだろ
javascriptのスレでやれよ 彼はjavascriptしか書けんみたいだし
0056デフォルトの名無しさん2015/04/14(火) 19:21:20.43ID:7ObaBR0M
君達は毛の壁を煽って何がしたいのだ。召喚したいのか?
0057デフォルトの名無しさん2015/04/14(火) 22:39:30.34ID:hfFhnDD4
関数型コミュニティに対するポエムの続きが読みたいんでしょ
0058デフォルトの名無しさん2015/04/15(水) 01:36:25.39ID:RG2QVuzc
ヲチスレでやってくれないかな
0059デフォルトの名無しさん2015/04/15(水) 06:30:15.96ID:MJe1PTeI
おい、あの岡部健のアプリだぞwwww

http://www.appjenny.com/Android/App/com.kenokabe.costcobb
0060デフォルトの名無しさん2015/04/15(水) 06:31:39.99ID:MJe1PTeI
http://www.iphoneapp.xyz/free/com.kenokabe.costcobb.apk

毛の壁のiOSアプリ、みんな使え〜
0061デフォルトの名無しさん2015/04/15(水) 10:01:46.78ID:wcd6okB3
あいつアプリ作ってたのか
objectivecできるのかあいつ?
0062デフォルトの名無しさん2015/04/15(水) 11:14:04.24ID:32OEEOG2
>>60
なんで拡張子がapkなわけ?
0063デフォルトの名無しさん2015/04/15(水) 14:35:06.68ID:zDoLrJPm
なんちゃって関数型クラスタども、これが世間だよ

https://twitter.com/buroburo6/statuses/588156083350458369
0064デフォルトの名無しさん2015/04/15(水) 23:13:46.91ID:4gfphDFh
本屋に平積みにされてたら買っちゃう奴いそう
0065デフォルトの名無しさん2015/04/15(水) 23:27:52.69ID:Q89pzmWa
まだ発売されていないのにいい本とかわかるのか?
0066デフォルトの名無しさん2015/04/16(木) 05:47:12.05ID:J3guke8p
え!?もうreturnって書かなくていいの!?pureでいいの?
0067デフォルトの名無しさん2015/04/16(木) 07:17:46.98ID:7jUqfvFj
スーパークラス化で感心するところそこなのかよwww
でもまあ、実のところリストの[]みたいに(pure a)を<a>と書けたりすると
Applicativeスタイルにはマッチすると思うんだけどな。
0068デフォルトの名無しさん2015/04/16(木) 08:50:37.52ID:0XHfZc1W
毛の壁の事をよく知りたい方は、このまとめPDFもご覧ください。

nmuta.dip.jp/~muta/tog288.pdf
0069デフォルトの名無しさん2015/04/16(木) 10:28:10.38ID:Uxi3XrZK
[WikiJA-l] Suisui氏より即時無期限ブロックを発動されたFXSTです 

Ken OKABE xxxxxxxx @ xxxxx.xxx 
2006年 9月 9日 (土) 17:31:10 UTC 

http://lists.wikimedia.org/pipermail/wikija-l/2006-September/000919.html ;
0070デフォルトの名無しさん2015/04/16(木) 22:13:00.24ID:9N3+Oa4T
wholemeal programming というのは、データ型に対する演算を、
ある構造を受け取って別の構造へと変換する関数によって表現すること、
と捉えて間違いないでしょうか。


Thinking Functionally with Haskell という本に数独ソルバーを作る章があり、
そこで wholemeal programming が出てきました。

行のリストとして表現された9x9行列 type Matrix a = [[a]] に対して、
列のリストや、3x3小行列のリストを得る関数が定義されます。
その際、m :: Matrix a に対して m !! i !! j などとインデックス計算をして個々の要素を参照するのではなく、
行列を転置して列のリストを得たり、3要素ずつグループ化する関数などを合成して小行列リストを得たり、
そうやって構造そのものの形を変換しており、そのようなプログラミングスタイルが
wholemeal programming だと紹介されていました。


wholemeal programming というのは、このような構造変換だけでなく、
もっと広い意味を持っているのでしょうか。
0071デフォルトの名無しさん2015/04/16(木) 22:25:21.10ID:9N3+Oa4T
>>70
ちなみに、本では構造を変換するとは書かれてなくて、
(インデックス計算するのではなく)行列それ自身を complete entity として扱う関数を定義する
と書かれていました。

しかし、言っている意味がよく分からず、実際にやっていたのが構造全体を組み替える処理だったので、
とりあえず >>69 のように捉えてみたしだいです。
0072デフォルトの名無しさん2015/04/16(木) 23:22:05.24ID:3W63KRV6
鶏を裁くのに牛刀を用いるのがwholemeal approach。
最初に効率を一切考えない、正しい解法も含むがいらない処理も沢山してしまう解法を作り、
その後不要な計算をしないよう改良していく手法。

数独ソルバーなら、空欄に1-9の全てのパターンを網羅した9x9行列のリストを作り、
その中から数独のルールに適合するものを取り出す、という方法がスタートになる。
10^(空欄の数)のパターンを全て計算するのは現実的ではないから、必要ない計算をしないようにしていく。

http://www.cs.nott.ac.uk/~gmh/sudoku.lhs
これがその本の元ネタでしょう。
0073デフォルトの名無しさん2015/04/16(木) 23:41:27.15ID:C8wOR+dQ
牛刀の例えはネガティブなイメージ出ちゃうんじゃない?
文字通り全粒粉アプローチって訳せば、
最初はゴミ(モミとフスマ)だらけの全粒粉から開発スタートってイメージがわかるかと。
0074デフォルトの名無しさん2015/04/17(金) 08:20:31.78ID:xoZHp2iY
1から9を繰り返し足していくのに、ループを使うような原始人から進化するべき
「アルゴリズム」「フロー」を捨てろ。
でないと関数型を追求することは不可能だよ
0075デフォルトの名無しさん2015/04/17(金) 08:22:08.56ID:xoZHp2iY
「フロー」というものがプログラミングには不可欠だという固定観念を捨てなきゃ。
0076デフォルトの名無しさん2015/04/17(金) 08:40:08.59ID:2I4pOBqW
>>72
完全に逆だ。
Huttonのそれが元ネタにしてるのが
Richard Birdの本なんだからな。
0077デフォルトの名無しさん2015/04/17(金) 08:57:05.88ID:va7l7l3W
>>75
フローだのアルゴリズムだの、無い言語があるの?
0078デフォルトの名無しさん2015/04/17(金) 09:07:42.22ID:IlVLp4fy
         ___
         | 岡 |                    
         | 部 |
         | 家 |
         | 先 |
         | 祖 |
         | 代 |
         | 々 |
      ,,,.   | 之 | ,'"';,
    、''゙゙;、).  | 墓 | 、''゙゙;、),、
     ゙''!リ'' i二二二二!゙''l!リ'''゙
     ‖  `i二二二!´ ‖
     昌 |: ̄ ̄ ̄ ̄:| 昌
    | ̄:|_|;;;l"二二゙゙l;;|_| ̄:|
    |  :|::::::| |;;;;;;;;;;| |::::|  :|
    |  :|::::::|┌─┐|::::|  :|                     __
 ./゙゙└‐┴ ┴l,,,,,,,,,,l┴┴‐┘゙゙゙゙\               / ̄   \
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|      〜 &     |      :::|
  ̄|三|三三|三三三三|三三|三| ̄          ~       |  健   ::::|
   |  |:::  |: :    : : |::   |  |                 |       ::::: |
   |  |:::  |: :    : : |::   |  |                  |  ∬    ∬::| 
  /_|:::  |: :     : :.|::  :|_ヽ                 |ii,,≦≧、  :ii :::|
 _|___|;;;;;;;;;;|,;,;,,,,,,,,,,,,,,,;,;,|;;;;;;;;;;|___|_              _ |旦‖===‖旦:| _
 l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l     -W-----┘二二二二二二二二二└--ff---\-- 
0079デフォルトの名無しさん2015/04/17(金) 11:31:42.74ID:NBcEkCSw
Haskell というより英語の話。
Maybe aについて、 NothingはいいんですけどJust aの "Just" がどういう気持ちなのか
あんまりはっきり理解できていないのですが、みなさんどんなかんじですか?
Nothingじゃない方のコンストラクタに使う英単語として選定されたこのjustの(英語としての)意味はどんなもの?
0080デフォルトの名無しさん2015/04/17(金) 13:15:32.90ID:ki8iVvfx
アルゴリズムもフローもいらんとなると、演繹というものが存在しなくなるんと違うか
0081デフォルトの名無しさん2015/04/17(金) 13:17:48.16ID:H3Beje5C
やっぱり初心者にもはすける
ビジネスシーンにもはすけるだろう!
0082デフォルトの名無しさん2015/04/17(金) 13:22:59.36ID:H3Beje5C
プログラミング初心者向けのhaskell本で
「はじめてのH」って本だれか書いて?
0083デフォルトの名無しさん2015/04/17(金) 13:25:07.77ID:PzasXWb4
権威に泥を塗られたスピノザという被害者への憐憫は見過ごされがちだ
0084デフォルトの名無しさん2015/04/17(金) 15:31:40.71ID:HcT4Z6BJ
>>79
「単なる〜」とか「ただの〜」みたいな意味では
http://ejje.weblio.jp/content/It's+just+a
0085デフォルトの名無しさん2015/04/17(金) 16:31:48.10ID:nxIB1yc7
395 名無しさん@ゴーゴーゴーゴー! 2015/04/17(金) 07:14:27.41 ID:9SxWDYYT0
毛の壁初心者の方へ


現役の弁護士によるツイートをご覧ください
そしてRTを

https://twitter.com/motoken_tw/status/452009450313097216
https://twitter.com/motoken_tw/status/453696338489016321
0086デフォルトの名無しさん2015/04/17(金) 17:31:36.64ID:1Smloeqb
>>84
もしかしたら〜
から
まさに〜
になるんだろ
0087デフォルトの名無しさん2015/04/17(金) 18:19:06.44ID:s+nJaO1V
Just Systems
May-Be SOFT
0088デフォルトの名無しさん2015/04/17(金) 20:44:35.19ID:PLmfZzGD
>>72 >>73
私の理解は全くの見当はずれでしたね。
本ではことさら indexing との対比が書かれていたので勘違いしてしまいました。

おかげさまで納得できました。
ありがとうございました。
0089デフォルトの名無しさん2015/04/18(土) 01:23:36.46ID:cIanB9vz
他言語のdata Option a= Some a | None の方が馴染んでいるのは秘密
0090デフォルトの名無しさん2015/04/18(土) 20:00:24.92ID:zBL4xnwg
417 名無しさん@ゴーゴーゴーゴー! 2015/04/18(土) 19:59:37.86 ID:LNSLKYsZ0
岡部ちゃんのブログ更新
http://kenokabe-techwriting.blogspot.jp/2015/04/lispspinoza.html?m=1

あらら、手抜きコピペの再利用ですね。
一つ前の記事に後悔しちゃって、消すことも出来ないので「目立たなくするように」するためかな?

岡部ちゃんさ、「すでに【脱アルゴリズム宣言】シリーズで述べたように、」

ってあるけど、それはどこを参照すれば良いのかな?(爆笑)
コピペリサイクル記事でもさ、せめて、この程度の修正はしようぜ?
0091デフォルトの名無しさん2015/04/19(日) 12:21:14.03ID:BDx+P9mq
原発コピペが去ったと思ったら入れ替わりで毛の壁が来たな
0092792015/04/19(日) 14:41:18.79ID:pB/4TY1x
>>84 反応ありがとうございます。なんか「なんにもない」と「単に5!!!」がやっぱりしっくりこないんですよねえ…
もう少し訓練をつんでみます
0093デフォルトの名無しさん2015/04/19(日) 19:25:20.36ID:TqE05fjB
>>92

Intが入っているかもしれない箱を渡されて、開けたら中身が

「なんにもない」
「ちょうど5」

なだけだろ。なんでそれがしっくりこないのかこそがわからんわ。
0094デフォルトの名無しさん2015/04/19(日) 19:44:35.88ID:g7ko6rYD
Justって言葉がしっくりくるかこないかは人の感覚次第だろう

自分もHaskellの文法だからってのを忘れたとすると
Maybeの中身がNothingかJust xだというのはいいとして
xをMaybeにするためにJust xってするのはもやっとする
0095デフォルトの名無しさん2015/04/19(日) 19:47:51.06ID:HUQoVR+2
紛れもない
0096デフォルトの名無しさん2015/04/19(日) 19:49:46.90ID:HUQoVR+2
分かった。Obvios a に変えよう
0097デフォルトの名無しさん2015/04/19(日) 19:56:54.50ID:bs5hwhjS
>>93
そこで「ちょうど」と言うのがしっくりこないのかと。

日本人ならその状況で「ちょうど5」とは言わず、単に「5」と言う。
「ちょうど5」と言うと、では、ちょうどではない曖昧な5もあるのか、
という事になりかねない。

まぁ、Haskell だと何らかの値構築子が必要なわけで、
Just 以外ならどんな名前にするかと訊かれると、返答に困るが・・・

>>96 は冗談だろ
0098デフォルトの名無しさん2015/04/19(日) 20:33:51.59ID:TqE05fjB
>>97
Maybeが曖昧で、それを無曖昧化した結果がNothingかJust xなんだから、
まさにJustでいいんだ、というのが命名者の発想だろ。

Justの代わりにSomeの方が日本人にはわかんないんじゃないの?
「なし None」と「なんらかの・ある Some」って語感がわかるならいいけど。
0099デフォルトの名無しさん2015/04/19(日) 21:03:30.47ID:bs5hwhjS
>>98
なるほどね。

ちょうどなんて言うからヘンなんだよな。
まさにって言えば俺もしっくりきた。

って >>86 でもう出てたんだね、ごめんよ。
0100デフォルトの名無しさん2015/04/20(月) 01:17:23.81ID:6TQJBTny
Boostライブラリのプログレスバーの存在意義を論ずるような真似をいつまで続ける気だ
0101デフォルトの名無しさん2015/04/20(月) 01:58:55.74ID:pO1ymbwK
本筋でないつまらないことで盛り上がって何かした気になる
よくある
0102デフォルトの名無しさん2015/04/20(月) 09:54:07.62ID:HQWDK9Be
cf. 自転車置き場の議論
0103デフォルトの名無しさん2015/04/20(月) 13:03:15.78ID:u7LO/gCX
Parsecとかでも時々ん?ってなるネーミングはある
Haskellだと関数だけじゃなくて型コンストラクタたったりフィールドだったり識別するものが増えるからネーミングが余計に気になるのかも
0104デフォルトの名無しさん2015/04/20(月) 14:38:09.34ID:2eevj3Zk
Spinozaは確かに使える。可能性を感じた。
0105デフォルトの名無しさん2015/04/20(月) 16:43:11.52ID:0hSvk0Oi
緑の害虫には一生つきまとってやる。
0106デフォルトの名無しさん2015/04/22(水) 08:19:49.68ID:GJyQGfm3
毛の壁の過去
http://netbmari.seesaa.net/article/81337651.html
0107デフォルトの名無しさん2015/04/22(水) 20:54:17.76ID:NZ8QzlQ5
☆ 日本の核ブ装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると改憲が実現します。皆様方、必ず投票に自ら足を運んでください。
私たちの『日本国憲法』を絶対に改正しましょう。☆
0108デフォルトの名無しさん2015/04/23(木) 07:36:47.21ID:6rGfWaSo
毛の壁本
今日本屋に並ぶらしいですよ
0109デフォルトの名無しさん2015/04/23(木) 08:24:55.14ID:/Z6TrNg2
どんどん広まって、UCLAを卒業したという学歴詐称も広まってほしい
0110デフォルトの名無しさん2015/04/23(木) 09:10:23.02ID:sxaJ1zhu
増田の岡部関連の書き込み、かなり削除されてるなww
岡部もやることが小さいなww
0111デフォルトの名無しさん2015/04/23(木) 21:20:22.01ID:LeResooG
何が始まるんです?
0112デフォルトの名無しさん2015/04/24(金) 12:58:05.70ID:v3IT9RWU
おいこら、らくだの卯之助よ。
岡部健氏とスキルで勝てるんか?勝負しろや。逃げんな
0113デフォルトの名無しさん2015/04/24(金) 13:02:06.09ID:/IU9j/kd
コンパイラもマトモに書けない健チャソが
OCamlの文法とコンパイラ拡張してラベル付き
引数持ちこんだ駱駝にどうやって勝てるんだwww
0114デフォルトの名無しさん2015/04/24(金) 15:02:59.72ID:sR1g6M3b
粘着軍はこんなスレまで立てたのか(呆)
0115デフォルトの名無しさん2015/04/25(土) 10:17:48.89ID:zFI89MHg
アプリカティブうんちしてくる
0116デフォルトの名無しさん2015/04/25(土) 14:48:52.43ID:/My2uXcp
http://www.amazon.co.jp/gp/product/4798043761/

Amazonでベストセラー1位じゃん
実は人気あるんだな
0117デフォルトの名無しさん2015/04/25(土) 14:56:53.67ID:IIQtsCT+
彼はiOSの出来損ないアプリに、当然のようについた低評価のレビューを片っ端から削除した前科がある。
だから、アマゾンの書評も「これは誹謗中傷目的の不当な評価である」と逃げを打つのは既定路線。
0118デフォルトの名無しさん2015/04/25(土) 16:05:32.13ID:iXjJJv3p
スレチ状態が続きすぎて諦めてるけど
お前らもしレビューを書くならあくまで真面目にな
中途半端に絡むなよ
0119デフォルトの名無しさん2015/04/25(土) 16:32:38.19ID:K9QmTshb
わろ
0120デフォルトの名無しさん2015/04/25(土) 19:00:18.52ID:1G6YdpRM
App Storeで「青空文庫を読む」というバグだらけのアプリに低評価なコメントされて逆切れし、
「これは誹謗中傷目的だから削除します」とのたまって本当に削除した岡部健だから、
今回のアマゾンとかの低評価も「陰謀だ」と言い出すのはわかりきってる。

過去にはこんなことをやってた。
http://u1sokuhou .ldblog.jp/archives/50346264.html
0121デフォルトの名無しさん2015/04/25(土) 21:32:07.54ID:gdfW3sMF
レビューはどうでもいいからこのスレで絡まないでくれ
バカが自分の通用する場だと勘違いする
0122デフォルトの名無しさん2015/04/25(土) 21:49:40.65ID:pGkm3L04
粘着軍どもが岡部氏を中傷する目的で立てたスレだから言っても無駄ですよ。
0123デフォルトの名無しさん2015/04/25(土) 22:03:21.14ID:QkVyrL7g
岡部、今度はAmazonで演説し始めたぞ

http://twitter.com/SE_O_T/status/591932284967591936
0124デフォルトの名無しさん2015/04/25(土) 22:50:49.29ID:UUGDuW98
岡部健っていう奴、どういう経歴なの?
数学系や情報工学系の由緒正しい経歴じゃないっぽい雰囲気。
文系から来たタイプか?
0125デフォルトの名無しさん2015/04/25(土) 23:52:39.20ID:eYc1bK/z
毛の壁10連ガチャとか作った奴誰だよ
0126デフォルトの名無しさん2015/04/25(土) 23:53:42.91ID:/Lz62wVI
>>124
GOOGLE+のプロフィール参照な。
0127デフォルトの名無しさん2015/04/26(日) 00:03:48.04ID:Kxjo5Nwd
そういえば古賀潤一郎がカリフォルニア大学ロサンゼルス校出身と自己紹介していたが、後に学歴詐称だと分かった事件があったね。
0128デフォルトの名無しさん2015/04/26(日) 00:04:26.53ID:Kxjo5Nwd
そもそも岡部健という人物は本当にいるの?
0129デフォルトの名無しさん2015/04/26(日) 03:03:37.91ID:ous7Nrql
Haskell界隈の閉鎖性を良く現している書き込みばっかりだな
別にいいじゃん、初学者が興味持ってくれて知名度上がれば

>数学系や情報工学系の由緒正しい経歴じゃないっぽい雰囲気。
こういう難癖ってなんだろうね?
「数学ガール」の人気みて結城浩は数学科じゃない、論文書いてない、
博士号持ってない、とか難癖付けてる数学板の野良博士みたい。

出る杭は打たないと気がすまない。
そんなに岡部健に嫉妬するなら自分で良い入門書の一つも書けばいいのに
0130デフォルトの名無しさん2015/04/26(日) 03:38:52.12ID:oJFxipXn
確かに、由緒正しい経歴である必要なんて全くない。
そんなこと言う奴は一人か二人では。

学歴なんか、どうでもいい。博士号なんて無くてもいい。
ただし、それは卒業してもいない学校を卒業したとフカシこくことを肯定するものではないことは、ハッキリさせておこうぜ。
0131デフォルトの名無しさん2015/04/26(日) 03:40:16.55ID:oJFxipXn
というか、Haskell界隈であろうがなかろうが一匹や二匹は学歴至上主義みたいな奴は居るだろうよ
0132デフォルトの名無しさん2015/04/26(日) 05:57:02.15ID:A1wpxgFi
荒らしの立てたスレ使ってるから調子に乗って荒らしが尽きない
こっちに移ろう
http://peace.2ch.net/test/read.cgi/tech/1428597032/
0133デフォルトの名無しさん2015/04/26(日) 05:59:50.39ID:3IjwcVse
それは2ちゃんねるのローカルルール的よろしくないな。
0134デフォルトの名無しさん2015/04/26(日) 09:08:11.44ID:fRwOzUF5
ヲチスレでやれ、としか言い様がない。

1.kenokabeはJavaScriptしか書けないんだし、
2.関数プログラミングができないのもGithubみりゃ明らか。

Haskellスレでやる理由がどこにもない。
0135デフォルトの名無しさん2015/04/26(日) 12:16:02.26ID:Kxjo5Nwd
>>131
学歴は重要じゃないよ。
しかし、基礎が分かっているかどうかを重視する上で、
独学で基礎が学べるかどうか考えたら、
なかなか難しいんじゃないかと考えるわけで・・・
0136デフォルトの名無しさん2015/04/26(日) 12:17:32.56ID:Kxjo5Nwd
大学や大学院で受ける指導っていうのは、決して興味がある内容ばかりではないよ。
しかし、後にそれが基礎として重要だということに気づくわけ。
独学では興味が湧いたことしか勉強しないでしょ?
だから、独学はダメなんだよ。
0137デフォルトの名無しさん2015/04/26(日) 12:33:02.08ID:YzZ8BmuQ
学問上の隠語を習得するには大学へ行くしかないが
そんな隠語で学問を囲って利権化したまま放置する態度が学者失格だとも言える
0138デフォルトの名無しさん2015/04/26(日) 12:58:53.94ID:Kxjo5Nwd
隠語というか、専門用語は重要だよ。
概念の検索性を高める。
0139デフォルトの名無しさん2015/04/26(日) 13:03:30.55ID:EksjvuLr
>>135
>しかし、基礎が分かっているかどうかを重視する上で、
>独学で基礎が学べるかどうか考えたら、
>なかなか難しいんじゃないかと考えるわけで・・・

学歴がある種のシグナリングになることは同意する
また学歴によるフィルターが結構実社会で有効と感じることが多い
大学や(高校でも)学んだ基礎ことは重要だと思う

でもさあ、相手が「わかってる」かどうか相手の学歴を見ないと判断できない、
って特にこの業界では役に立たないというか、結構無能じゃね(笑)
0140デフォルトの名無しさん2015/04/26(日) 13:05:35.85ID:fCruzWL4
無能というより完全に有害
0141デフォルトの名無しさん2015/04/26(日) 13:07:54.07ID:Kxjo5Nwd
>>139
なんとか健の本を読んだだけで、そいつがバカだと判断するのに十分だと言いたいわけね
0142デフォルトの名無しさん2015/04/26(日) 13:36:15.63ID:A1wpxgFi
教育で得た正しさを使ってその正しさを証明する者と他の正しさを探す者がいる
前者はいかにも知識と教養にあふれているように見えるが
実際はエネルギーを消費するだけで何も生み出さないトートロジーである
0143デフォルトの名無しさん2015/04/26(日) 13:42:11.12ID:2npT22yp
>>142
正しいことと証明できることとは別、という常識からすると、貴様の意見には同意しかねる
0144デフォルトの名無しさん2015/04/26(日) 15:32:45.74ID:qgRFfbK0
岡部健はUCLAを仮にも卒業してるのだから、素養はあるんだろうさ。
C言語も実はできるのでは。
0145デフォルトの名無しさん2015/04/26(日) 15:49:33.72ID:2npT22yp
コードを見ないことにはなんとも
0146デフォルトの名無しさん2015/04/26(日) 16:54:25.20ID:L5p6tnBd
学歴が無いことは何も恥ではない。
恥なのは学歴を偽ることだ。
0147デフォルトの名無しさん2015/04/26(日) 17:38:00.48ID:YIE+qGwA
あの文章でどうやってUCLAを卒業まで持っていけるんだ?
0148デフォルトの名無しさん2015/04/26(日) 17:39:27.89ID:YIE+qGwA
本当にアメリカの大学をCSで卒業してるんなら、一人や二人はFBやTwitterで仲間との交流ぐらいあるだろうよ。
それが無いんだよ。学歴詐称に決まってるだろ。
0149デフォルトの名無しさん2015/04/26(日) 19:34:37.24ID:JgRuu/Q5
駱駝とハムに比べたら岡部氏はもっと格上
0150デフォルトの名無しさん2015/04/26(日) 20:45:41.96ID:e4tIRRVz
バックに何か付いてるのかな
0151デフォルトの名無しさん2015/04/26(日) 20:55:12.20ID:Ql5jpImz
おまえらHaskellの話しろよ
0152デフォルトの名無しさん2015/04/26(日) 21:05:58.90ID:KkAjQB1e
HaskellPlamform更新マダー
0153小保方晴子2015/04/26(日) 22:23:21.53ID:CWSeILxV
まあ、私はちっとも驚きませんけどね。
2ちゃんねるでさんざん自作自演してる彼ですから。
0154デフォルトの名無しさん2015/04/26(日) 22:54:30.08ID:GWsv7xfi
関数合成 (.) に関して一般的に交換法則は成り立ちませんが、
f . g の f や g によっては交換できる場合もあります。

交換法則が成り立つ必要十分条件はありますか?
0155デフォルトの名無しさん2015/04/27(月) 07:49:04.83ID:wSLTFIGd
先ずプログラミング未経験の奴はソースコードをUTF-8で書けと言われても解らない
UTF-8で書くことを覚えてもターミナルの表示をUTF-8対応にできない
Shift-JISで日本語書き込んで詰む
そもそもターミナルなんて嫌でとっととグイアプリ作りたいのになんでターミナルで躓かなきゃならないんだとずぶ濡れの犬のような気持ちになる
もうややこしやといって敬遠する
このことが地味にHaskellへの新規流入を妨げている
0156デフォルトの名無しさん2015/04/27(月) 08:14:27.11ID:7D8wCJnI
webブラウザで動いてjsの代わりになれば人気出るね
0157デフォルトの名無しさん2015/04/27(月) 09:14:07.62ID:DOff7EOW
みんな考えることは同じ
http://qiita.com/philopon/items/1451f6b8c5ccec41479d
0158デフォルトの名無しさん2015/04/27(月) 16:49:31.50ID:4SSIO0jR
>>151
するようなネタが全くないわけでして。
01591542015/04/27(月) 18:00:15.79ID:bzdehbpG
>>154
レスが付かないようなので、もう少し特定の場合に絞ります。

ツリーやリスト、配列など、何らかの構造を持ったデータ型があるとします。
そのデータ型は構造の形と、その内容(ツリーの葉やリストの要素など)との組によって成ると考えられます。

このとき、内容に依存せずに構造の形を変える関数と、
構造の形を変えずに内容を変える関数とは、関数合成において可換です。

直感的には確かにこうなるとは分かるのですが、
なぜこれが成り立つのか、どのような構造のデータ型でも成り立つのか、
と問われると自信がありません。

このようなことに関して論じた論文やWebコンテンツ、書籍などはないでしょうか。
0160デフォルトの名無しさん2015/04/27(月) 18:50:32.65ID:LJFJeOKy
https://twitter.com/mutamac/status/322518309570498560
0161デフォルトの名無しさん2015/04/27(月) 19:31:11.59ID:VB3BB2rW
haskellのはなしされても困る
難しいし
0162デフォルトの名無しさん2015/04/28(火) 02:32:49.94ID:Vr1PFukf
イカ娘という藁人形くんは藁人形過ぎんべ。
0163デフォルトの名無しさん2015/04/28(火) 02:48:39.41ID:Teqnn2Le
>>159
共役(conjugate)という概念が近い気がする
具体例としてはこんなの
http://ja.wikipedia.org/wiki/%E4%BD%8D%E7%9B%B8%E5%85%B1%E5%BD%B9%E6%80%A7
今の話に連続性とかは全然要らないからもっと抽象化されたいい定義もあると思うんだけど
詳しくないのでこのくらいしか示せない
0164デフォルトの名無しさん2015/04/28(火) 08:05:09.36ID:CdNtmvFe
177 :名無しさん@ゴーゴーゴーゴー!:2015/04/27(月) 18:37:49.73 ID:0nb1+zzF0
岡部によるMINIX談義

https://twitter.com/mutamac/status/322518309570498560
0165デフォルトの名無しさん2015/04/28(火) 12:09:01.30ID:xSgyLvy4
>>164
くっそwww
0166デフォルトの名無しさん2015/04/28(火) 12:14:10.41ID:pmMjJKEE
ナベくんはやっぱり敵に回すと怖いことを再確認w
一応フォローを一時的に外しておいて良かったわww
0167デフォルトの名無しさん2015/04/28(火) 14:13:57.53ID:8LxH1Yrp
>>159
何をきっかけに考え始めたの?
自然変換や多相関数っていうのは知ってるんだよね?
01681542015/04/28(火) 18:04:05.29ID:W3D8VZu+
>>163
ありがとうございます。

想像していたのとはちょっと違って抽象度が高そうですが、
がんばって学んでみます。


>>167
考え始めたきっかけは最適化です。
ポイントフリーで記述していた式の中で、たまたま2つの関数が
関数合成に関して可換なのに気づいたので交換してみたら、
交換後に隣同士になった関数同士が融合できて最適化できました。

その時は本当に偶然見つけたのですが、もっと効率よく発見できないかと思い質問しました。
条件が分かれば悩まなくて済み、また勘違いで交換してしまうこともなくなります。

Haskell のデータ値はすべて抽象構文木で表せるので、
その形や変換する部分木の位置などに依るのかなと思っていましたが、
圏論の話が出てくるのは予想外でした。


自然関数は名前だけは知ってます(内容は未学習)。
多相関数は要するに型シグネチャに型変数を含む関数ですよね。
0169デフォルトの名無しさん2015/04/28(火) 18:49:24.22ID:s9k+iiT5
>>168
何らかの多相型をMとおいたとき、f : a -> bなる関数をmapで持ち上げたmap f : M a -> M bというと、
多相性を持ったまま何らかの操作を行う関数tx : forall a. M a -> M aは可換である、ということはなんとなく分かる。
多分、証明もできる。

もっと緩い条件もあるかもしれないけど、型レベルだとこの程度しか言えないんじゃないか?
0170デフォルトの名無しさん2015/04/28(火) 22:38:28.56ID:8LxH1Yrp
>>168
自然関数じゃなくて自然変換だよw 
自然変換はほぼ多相関数と同義で、
あなたのいう「内容に依存せずに構造の形を変える関数」のこと
だから名前だけ知ってるじゃなくてちょっと中身も見てみたら
まあ>>169の言う結果になると思うが
0171デフォルトの名無しさん2015/04/28(火) 23:26:28.54ID:W3D8VZu+
>>169
>>170
すいません、自然関数はただの書き損じです。

ちょっとかじる程度では全く理解できないので自然変換についてちゃんと学びたいのですが、
Wikipedia のような辞書ではなく、ステップアップで学べるようなもので、
おすすめの書籍やサイトはありますか?
0172デフォルトの名無しさん2015/04/30(木) 12:52:33.36ID:XY0F0CkV
>>171
http://nineties.github.io/category-seminar/1.html#/92

最近見てなかったけどマメに手が入ってる、尊い...拝掌
0173デフォルトの名無しさん2015/04/30(木) 14:12:01.94ID:XY0F0CkV
すいません拝掌は書き損じです><
0174デフォルトの名無しさん2015/04/30(木) 20:39:45.77ID:Y/GqQ0EE
不正なノイズ
0175デフォルトの名無しさん2015/05/01(金) 04:56:54.76ID:fVuNknYg
668 悶絶青年スエナガ ◆nHX7uJrJYv2Z 2015/04/30(木) 22:47:23.36 ID:Z5XSNckF0
皆さん、わかってないでつね( ゚∀゚)

彼は自作自演レビューについて、Twitterやここで騒がれていることについては、
「知らなかった」という筋書きにするつもりなんでつよ・・・・

そう、彼はTwitterや2chなんて見ていない、という「設定」を今、作り上げているのでつ( ゚∀゚)

その証拠に、いつもは瞬間湯沸かし器のようにTwitterに反応する彼が、今回は一切反応してませんwwwww
彼なりに、「必死に、必死に、必死になってガマン・ガマン・ガマン」してるのでつ( ゚∀゚)

反応してしまったら、Twitterをエゴサーチしていることがバレますから、
「アマゾンレビューで自演していた」ことが噂になってることを知らなかったことには出来ませんからねwwwwww

彼は後になって「え?そんなことが話題になってたの?僕は知らない」と言うために必死になって今は耐えているのでつよwwwww
0176不明なデバイスさん2015/05/01(金) 07:51:16.60ID:bd+SwLlp
まじで興味ないんだけど
何で反応する人がいるんだろ
0177デフォルトの名無しさん2015/05/01(金) 08:35:11.62ID:eutNCxIi
興味あるからじゃね?
0178デフォルトの名無しさん2015/05/01(金) 17:47:37.74ID:F/SXJcEE
>>172
スライドを紹介していただいたこと自体には感謝の気持ちはあるのですが、
お礼を言う気分になれません。

このようなタイミングで言い方をそっくり真似されるのは、
小馬鹿にされたようで、あまり気分の良いものではありません。
0179デフォルトの名無しさん2015/05/01(金) 18:32:23.93ID:bZSKV+U3
http://shindanmaker.com/529918

毛の壁うらない、おまえらもやれよ
0180デフォルトの名無しさん2015/05/02(土) 02:10:23.61ID:jinFEowY
Haskellの考案者が亡くなったと聞いて駆けつけました
0181デフォルトの名無しさん2015/05/02(土) 09:56:16.48ID:X3dtRZ+Y
どこでそんな情報が出ていたんだ?
0182デフォルトの名無しさん2015/05/02(土) 13:00:24.67ID:5Y45W3x5
>>181
http://www.reddit.com/r/programming/comments/34f19q/paul_hudak_creator_of_haskell_has_died/
0183デフォルトの名無しさん2015/05/02(土) 20:43:21.60ID:xs/LOAyd
30分くらい喪に服せよ
0184デフォルトの名無しさん2015/05/02(土) 21:47:06.15ID:R1nes/uM
訃報: Haskell設計者Paul Hudak氏
http://developers.slashdot.jp/story/15/05/01/2154234/

スラドでも取り上げれられてた
0185 ◆C93WWgXd.E 2015/05/05(火) 07:12:28.31ID:rJmUZz/a
おら、自作自演レビュー失敗野郎
ホモの岡部!かかってこんかい
0186デフォルトの名無しさん2015/05/05(火) 16:26:05.11ID:NTx27ZOo
>>184
コレでこの言語もおしまいだね 
0187デフォルトの名無しさん2015/05/06(水) 13:13:54.56ID:d4s5gCSo
せやろか
0188デフォルトの名無しさん2015/05/06(水) 18:51:40.54ID:lCIkxTrL
しょぼい質問ですまないが、
foldって多相関数?
0189デフォルトの名無しさん2015/05/06(水) 19:02:30.29ID:x2IHNZjz
foldl :: (a -> b -> a) -> a -> [b] -> a

aとbは普遍量化されている。
0190デフォルトの名無しさん2015/05/06(水) 19:15:58.04ID:lCIkxTrL
ということは、foldって自然変換であって自然性条件を満たしている?
foldの自然性条件がどんなものか想像できないんだ
0191デフォルトの名無しさん2015/05/06(水) 19:18:01.71ID:x2IHNZjz
>>190
Foldable型クラスについて考えたら?
0192デフォルトの名無しさん2015/05/06(水) 22:41:12.83ID:lCIkxTrL
>>192
もう少しヒントをくれないか
0193デフォルトの名無しさん2015/05/07(木) 01:26:31.87ID:LlwVP2OT
自己解決キタ━━━━━━(゚∀゚)━━━━━━ !!!!
0194デフォルトの名無しさん2015/05/07(木) 07:42:17.64ID:lfcx6TTy
学歴欄に注目。
3年前は「卒業」という文言があったが、今では無くなっている。


118 :名無しさん@ゴーゴーゴーゴー!:2015/05/07(木) 01:21:47.78 ID:gZ11Gp/P0
みなさん、この画像をダウンロードしてみてください。
http://twitter.yfrog.com/n19xup?sa=0
(「Download this image」というボタンをクリック)

彼はかつて、Google+ではUCLA卒業と記載していたのが、現在では消えています。
0195デフォルトの名無しさん2015/05/07(木) 23:33:22.66ID:zMQZR1+Z
一度自演してしまうと以降のそれっぽいだけの書き込みまで自演にしか見えなくなる
・・・加勢せざるを得ない人は自演に見えてしまうだけで自演じゃないんだよね?
0196デフォルトの名無しさん2015/05/07(木) 23:44:18.25ID:SJ9cQ9MA
スレチ
0197デフォルトの名無しさん2015/05/08(金) 15:20:28.66ID:2DPjDbBn
毛の壁の顔おもしろすぐる
0198デフォルトの名無しさん2015/05/08(金) 19:12:29.86ID:Wsgktw33
身なりや人格批判ではなく専門分野の知識のみに対して攻撃していこうな
0199デフォルトの名無しさん2015/05/08(金) 19:17:35.45ID:ZHeXF73S
いいえそいつに関する全話題がスレ違いです
0200デフォルトの名無しさん2015/05/08(金) 22:15:32.46ID:Ewa40zmC
身なりや人格批判なんて、全体の何%あるんだ?
大半は記事の批判してると思うが
0201岡部健一2015/05/08(金) 23:50:43.90ID:Tc9eNMtd
fx-toushi.jp/blog-entry-31.html

更新
0202デフォルトの名無しさん2015/05/09(土) 06:13:42.20ID:R7pPsL7j
何年か前にこのスレでお勧めされてたhaskellの教科書のコードが
最近のGHCで動かなかったんだけどhaskellってそういうものなの?
0203デフォルトの名無しさん2015/05/09(土) 08:35:23.33ID:Bw82nfhw
>>202
コード貼ってみ
0204デフォルトの名無しさん2015/05/09(土) 09:03:40.24ID:v8DO1laq
どんなコードが動かないのか言ってくれないと
互換性100%保って開発されてる言語なんてほぼないでしょ
としか言えない
0205デフォルトの名無しさん2015/05/09(土) 10:57:45.25ID:3DvLgZhI
n-kのやつでは?
大概の言語は互換性を可能な限り保存するけど
Haskellは割とバッサリオプション扱いしちゃうよね。
0206デフォルトの名無しさん2015/05/09(土) 11:30:54.68ID:bNXnXiFr
実験言語の宿命ですわ
使うならHaskellと心中する気で使わないと
0207デフォルトの名無しさん2015/05/10(日) 19:54:16.77ID:vvnbmxfh
LXRとかopengrokとかgonzuiとか、cross referencerと言うのでしょか、
ソースコード見る時にタグづけ・リンク付けしてくれる便利なのがあるけど、
Haskellのソースにつかえるものって何かありませんか
0208デフォルトの名無しさん2015/05/11(月) 07:33:17.87ID:XnQMQgf4
http://qiita.com/iiojun/items/5f63d1cf485cec442ff3
ある種の書籍にみられるAmazonレビューコメント評価の傾向

http://qiita.com/nonstarter/items/fb5fc7582821d7f98297
『関数型プログラミングに目覚めた!』のレビュー(Day-2)
0209デフォルトの名無しさん2015/05/11(月) 09:40:29.74ID:OkrNXSSQ
査読が機能してない出版業界ってもうダメかもわからんね
we reject kenokabe
0210デフォルトの名無しさん2015/05/11(月) 17:08:39.11ID:rqU23QV5
最近のレビューは商売レビュー屋が書くので当てにならない
0211デフォルトの名無しさん2015/05/11(月) 18:07:53.13ID:fXdd85Lw
本屋にたくさん平積みしていたよ‥世紀末だね‥
0212デフォルトの名無しさん2015/05/11(月) 20:54:00.11ID:tVwc5MX9
毛の壁は張角
IQ本は太平妖術三巻の内の一巻
0213岡部健2015/05/13(水) 13:19:35.89ID:7n8Agdd+
ボレロ、おまえは間違ってる。圏論の理解も間違ってる
0214デフォルトの名無しさん2015/05/13(水) 14:09:57.50ID:8NL6fUzR
cabalバージョン違いのパッケージ共存できないのか
サンドバックって付け焼刃みたいな対応とか、cabalがクソ過ぎる

と思ってぐぐるとcabal hellとか出てくるしorz
0215デフォルトの名無しさん2015/05/13(水) 16:04:09.96ID:ll6glzrw
結局人力でパッケージ管理とか何のためのcabalか分からなくなってくる
0216デフォルトの名無しさん2015/05/13(水) 18:24:31.35ID:ONEyRCsc
DRYとかいう不気味の谷
全然違うパッケージの共存は許すが殆ど同じものは許さない
0217デフォルトの名無しさん2015/05/13(水) 18:42:00.16ID:L4VSJ4+X
ボレロ有名だったのか。Twitterでフォローしてたけど
0218デフォルトの名無しさん2015/05/13(水) 19:02:14.28ID:TGVGO327
つまらん揚げ足取りで岡部さんのエネルギを浪費させるのはやめてくれ。
あんな話をしてくれる人は他にいないんだから。
仙台のなんとか先生の話はもういいよ。つまらんから。
0219デフォルトの名無しさん2015/05/13(水) 19:30:03.41ID:1/KrX9dS
ボレロって何?
0220デフォルトの名無しさん2015/05/13(水) 23:09:50.99ID:4wfpqqcc
>>219
厨二じゃない人だと思います。
0221デフォルトの名無しさん2015/05/14(木) 07:35:02.35ID:YnCF7Vuv
862 :名無しさん@ゴーゴーゴーゴー!:2015/05/14(木) 07:07:10.96 ID:SRiT9Cuo0
勘違いしてる奴が非常に多いが、岡部がQiitaを除名されたのは、
言説の怪しさではない。

個人情報の暴露を含んだ誹謗中傷をしたから。
これが全て。
直ぐに消されたから、知らないんだろうな。

863 :名無しさん@ゴーゴーゴーゴー!:2015/05/14(木) 07:09:53.94 ID:SRiT9Cuo0
「記事を丸ごと消してコメントを削除」するということを繰り返していたことは、
運営に睨まれる要因ではあったが、除名されたのは、

「誹謗中傷行為を繰り返したがら」。


これ、大事なことなので忘れないように。
0222デフォルトの名無しさん2015/05/14(木) 18:54:37.99ID:PqTHUvj6
kenokabeは爬虫類
0223デフォルトの名無しさん2015/05/14(木) 23:48:35.62ID:PU6/Ufkb
粘着軍は黒光りする昆虫
0224デフォルトの名無しさん2015/05/16(土) 05:26:51.08ID:f/6HmmLw
岡部が言ってるだけなのに、なんであんなに関数業界の人は必死になってんの?
関数業界の人は一般的なニーズと乖離した所ばかり掘ってるよ。

一般的なニーズは、関数型プログラミングでは、どういう成果物が効率よく作れるのか
という実用部分であって、瑣末な部分の理論の正否なんて気にしてないんだよ。

岡部の本に間違いがあるかどうかはともかく、大枠で方向性を示したことは評価できると
思うんだけどな。その辺がわかってないよな。
0225デフォルトの名無しさん2015/05/16(土) 11:10:08.35ID:m17hPiVk
オブジェクト指向が衰退したんじゃないかな
今ならOOを倒せるっぽいしその中心にいる人物は英雄になれる
OO全盛期には必死に逆張りしても骨折り損だったが今は違う
0226デフォルトの名無しさん2015/05/16(土) 11:15:10.46ID:BDaO4G29
40台でもう後がない岡部にとってはワンチャンなんでしょ
OO叩きはいい看板なんだよ
0227デフォルトの名無しさん2015/05/16(土) 11:47:43.20ID:SD2VGHuN
ぶっちゃけHaskellもLispと一緒で主流にはなれないでしょ
0228デフォルトの名無しさん2015/05/16(土) 13:17:28.79ID:cTE7t72a
スピノザならあるいは・・・・。
0229デフォルトの名無しさん2015/05/16(土) 13:35:34.95ID:ucBctojg
>>224 >>225
その通り
0230デフォルトの名無しさん2015/05/16(土) 15:58:34.07ID:Lio5eCYO
いくらなんでも自演バレバレだろうがよ
バレてないとでも思ってんのかね
0231デフォルトの名無しさん2015/05/16(土) 17:29:33.32ID:1wcuMTJn
関数型 vs OOという対立図式の方が売り込みやすい。マーケティングの
事がわかってない連中だけが騒いでる。ま、炎上して注目されるという
意味では悪い話ではないんだが。
0232デフォルトの名無しさん2015/05/16(土) 20:47:21.57ID:m17hPiVk
多くの人にとって重要なのは対立することではなく簡単に勝てること
つまり逆張りしないことだ
0233デフォルトの名無しさん2015/05/16(土) 20:52:20.70ID:SD2VGHuN
基地外が基地外理論喚いてるならほっとけばいいのに
コミュニティ(笑)の為にとか

 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
0234デフォルトの名無しさん2015/05/16(土) 21:25:10.08ID:m8m9+RQQ
実際にQiitaとgoogle検索結果が汚染されたのは事実。
ここでkenokabe擁護?のような真似事している奴も中身について何も言及しないのも事実(>>224)。大枠って何?
日に何度か、書き捨てのようなレスをして荒らしている奴がいるのは事実。
物理板の荒れ方とよく似ているので、よく似た症状の患者がいるのだと推測。
0235デフォルトの名無しさん2015/05/16(土) 22:53:41.06ID:1wcuMTJn
汚染厨来たなw
検索結果に文句があるなら、グーグルをdisるしかねぇだろ。
実は、グーグル先生のアルゴリズムでは、騒げば騒ぐほど検索上位になるんだぜ。

あと、qiitaの勝手管理者みたいな真似せず、君らが、独自にブログサービスでも
百科事典でも何でも作ればいいんだよ。人気が全く出ないだろうけど。
それに、無料で使わせてもらってるんだから、管理会社に迷惑かけるなよ。君ら
何様のつもりみたいな傲慢な人が関数界隈には多すぎる。

君らみたいなのが、初心者を遠ざけてしまい、イマイチ人気出ないんだよね。
ちょっとでも間違いがあると、人格まで全否定みたいな極端な奴が多い印象。
0236デフォルトの名無しさん2015/05/16(土) 23:05:15.74ID:SD2VGHuN
まあGoogleが汚れるのはGoogleの責任だしQiitaが汚れるのはQiitaの責任だよな
例のアレが基地外なのは疑い様のない事実ではあるけども自称関数型コミュニティの識者()も勘弁してくれって感じ
0237デフォルトの名無しさん2015/05/16(土) 23:19:10.31ID:ws39nzeu
いくら自演したって誰もまともに相手になんかしねーよ
自分のブログにでもひっこんでろ
0238デフォルトの名無しさん2015/05/16(土) 23:42:59.03ID:5WGKvptr
騒動の収穫としては、岡部だけじゃなく、仙台の先生も同じく教祖タイプという
ことがわかったことだな。取巻きとしては、仙台の先生を祭上げておかないと
食扶持を失いかねないし、熱心な理由もわかる気がわかる気はする。

両者とも論理を越えたところで戦っているのだ。

一方、ビジネスとして見ると、マーケティング的には岡部は天才的なものを
持っている。キャッチーな用語を上手く編み出すのは天性のものだよ。
0239デフォルトの名無しさん2015/05/16(土) 23:51:25.61ID:Xo5bM6FI
もしそうならこんなことにはなってないんじゃないか
0240デフォルトの名無しさん2015/05/17(日) 00:09:05.06ID:vxP+UTbZ
仙台の先生って誰?
0241デフォルトの名無しさん2015/05/17(日) 02:22:27.46ID:I4gH+GcU
bristle wall は火消し部隊を雇ったのか?急に書込が増えたな
0242デフォルトの名無しさん2015/05/17(日) 03:46:18.69ID:KOELu0yT
別スレでやれ
0243デフォルトの名無しさん2015/05/17(日) 09:52:55.38ID:XD8qkQRv
Haskellは難しいがC++も難しい
争いが絶えないとかいう問題ではなく統一したら難易度が倍になるから分離してるだけだ
0244デフォルトの名無しさん2015/05/17(日) 09:57:22.35ID:ORYJ+N7V
> 仙台の先生も同じく教祖タイプ
仙台は教祖なんかじゃないよ。群れたがる三流学徒だと確認できたよ
0245デフォルトの名無しさん2015/05/17(日) 12:28:39.34ID:bObx+CyQ
すごいハスキル中の初学者です。
型クラスについて教えてください
Eq とか Ord とかの指定を習いましたが、これは言語処理系で組み込まれているものでしょうか?
それとも、実は自由に設定できる、あるいは自分流型クラスを設定できるように(学習が進めば)なるのでしょうか?
0246デフォルトの名無しさん2015/05/17(日) 16:38:23.79ID:yjYevIhU
型クラスは自分で作れますが、クラスにはインスタンスが2個以上なければ無意味
なので同じ性質を持つ型を2個以上作るのですがそれはDRYの原則に矛盾する可能性があり
初学者にはおすすめ出来ません
0247デフォルトの名無しさん2015/05/17(日) 20:30:26.93ID:/1M7kTbP
学習してる人にDon't Repeat Yourselfて…
既存の型を自作の型クラスのインスタンスにすることも、
自作の型を既存の型クラスのインスタンスにすることも、
既存の型を既存の型クラスのインスタンスにすることも、できる。
既にインスタンス化されている型と型クラスを書き換えるのは少し手間がかかる。
0248デフォルトの名無しさん2015/05/17(日) 22:10:04.28ID:7pPi0iqf
> 既にインスタンス化されている型と型クラスを書き換えるのは少し手間がかかる。
えっそんなのできるの? くわしく

data Foobar = ... deriving Hoge
でHogeを自作するのは可能?
0249デフォルトの名無しさん2015/05/18(月) 02:24:26.93ID:85kr6JxX
>>243
C++は簡単だろ。
0250デフォルトの名無しさん2015/05/18(月) 03:09:26.48ID:eEjXu/P7
>>248 語弊を与えてしまったと思う。申し訳ない。
newtype MyFoo = MyFoo Fooとかやって、instance C MyFoo where ... みたいにすれば、
オレオレ定義のインスタンス化はできるよっていうだけ。
既にあるインスタンスと、それを使っているコードの動作は変えられないよもちろん。

個人的には>>247の3番目が通るのはどうかと思う。
下手糞が作ったライブラリを使わないといけなくなったら地獄が待ってる。
まだそんな事例には出くわしたことがないけど、塞げる穴じゃないのかこれは。
0251デフォルトの名無しさん2015/05/18(月) 08:33:14.68ID:PFYZF6oW
                              ,.-―: ̄`ー::::::::::、
                            /::::::::::::.::::::::::::::::::::::::::::`::、、
                           /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
                           l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
                           l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
                          l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
                          l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
                          ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
                         ヽ:::::    ̄ .)::;  l  ̄   l::::/    
                          、:::::..   /:::; .,-、     l:::/、
                         ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ
                          l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
                        l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
                        l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\
0252デフォルトの名無しさん2015/05/18(月) 11:41:43.76ID:1sYrNLv/
>>250
もし関数型が自然科学なら価値判断より事実が争点になる
「インスタンスになったら地獄」といくら主張しても
「インスタンスである」と事実を宣言されたら勝てない
0253デフォルトの名無しさん2015/05/18(月) 14:08:32.13ID:J+DllwNy
>>252
健ちゃ、こんなところまできて自演?
0254デフォルトの名無しさん2015/05/18(月) 14:33:22.46ID:NV1bgdqX
岡部は関数型でどんなアプリ作ったのか見せてくれよ。
自分は作ったことがないのに、「私の本を読めば作れるようになる」じゃ、詐欺だぞ
0255デフォルトの名無しさん2015/05/18(月) 14:34:36.88ID:NV1bgdqX
あと岡部よ。アマゾンでてめぇの本をてめぇで高い評価しくさった事についても弁明しろや。
0256デフォルトの名無しさん2015/05/18(月) 14:36:07.03ID:NV1bgdqX
おら、365日返金保証の教材野郎。逃げてんじゃねーぞ
0257デフォルトの名無しさん2015/05/18(月) 14:41:12.33ID:aBJ9oZwQ
kenokabeもkenokabeアンチも氏ね
トンデモ理論を叩き潰したくなるのはただの同族嫌悪だろうが
0258デフォルトの名無しさん2015/05/18(月) 14:48:21.07ID:J+DllwNy
>>257
>トンデモ理論を叩き潰したくなるのはただの同族嫌悪だろうが

意味わがんね
0259デフォルトの名無しさん2015/05/18(月) 17:09:27.48ID:1sYrNLv/
同族嫌悪というか単純に名無しを嫌悪しているから実名を特定したくなるんだろう
正しいか誤りかという以前に名前が分からないのと意味が分からないのを嫌悪している
0260デフォルトの名無しさん2015/05/18(月) 21:42:18.84ID:Za9DOvVn
>>249
糞むずいだろ
haskellとは別方向の難しさ
0261デフォルトの名無しさん2015/05/18(月) 22:41:26.79ID:gkB/bqS0
C++が難しいとしたら、逆に何が簡単なんだよ。
C#やJavaも同程度には難しいだろ。
プロが使う実用言語で、それで飯食っているやつが居るんだから、
ある程度難しいのは大前提で、この程度で難しいといっていたら何も出来ないよ。
少なくとも、家を建てたり、自動車作るよりは、覚えることも少ないし、ずっと簡単だと思うが。
どこまで甘えるんだよ。
02622482015/05/18(月) 22:52:25.55ID:Se0XfJ+o
>> 250
なるほど。
instance定義だけをimportしない、って方法はないんだね。知らなかった。
0263デフォルトの名無しさん2015/05/18(月) 23:17:47.47ID:Za9DOvVn
>>261
いや例えばcoders at work に出てくるような有名なプログラマでも
「難しすぎ」 「書ける気がしない」 「複雑すぎて何か間違っている」
とか言ってるぞ
Erlang作者「C++は満足に読めも書けもしません。C++は嫌いなんです。何か間違っているように感じます。複雑すぎます」

つかc++を簡単だって言ってる人の方が珍しくないか?
0264デフォルトの名無しさん2015/05/18(月) 23:20:04.82ID:wsHCJh20
C++簡単とかいう大きすぎる釣り針にかかってやろうかと思ったがスレチではないかと心配になった
0265デフォルトの名無しさん2015/05/18(月) 23:55:18.12ID:gkB/bqS0
だったら何が難しいか具体的に書いてみろよ。
比較対象はC#とJAVAでいいよ。
0266デフォルトの名無しさん2015/05/19(火) 00:18:36.13ID:JW8ZA2Yc
constexpr
0267デフォルトの名無しさん2015/05/19(火) 00:21:56.02ID:jGcxlJfu
逆にc++の何が簡単なんだw
0268デフォルトの名無しさん2015/05/19(火) 00:24:26.22ID:F2BOffyE
難しいというかデザパタを使わなければならない不自由さが面倒
0269デフォルトの名無しさん2015/05/19(火) 00:27:32.08ID:NL6C5oh4
CよりC++の方が簡単になった。

全ての状態に対してテストを行うことは所詮不可能なので、型が厳格なのが
多くのスクリプト言語に対してメリットになってると思う。
0270デフォルトの名無しさん2015/05/19(火) 00:28:32.22ID:Ri/mEtfG
TIOBEで申し訳ないが、C++は3位。
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
みんな普通に使っているということ。
普通の人が普通に仕事で使う、普通の実用言語。
F#やHaskellみたいに難しくて人が寄り付かないような言語ではないということ。
そりゃ、BASICなんかのお子ちゃま言語と比べれは難しいかもしれないが、
プロフェッショナルの使う実用言語なんだからある程度は当たり前だろう。
0271デフォルトの名無しさん2015/05/19(火) 00:41:45.17ID:jGcxlJfu
使ってる人多いから簡単とはならなくね
難しいから使わない 簡単だから使うとはならんし 
広く使われる言語って 別に言語が優れてるからとか簡単だからって理由で使われるわけではないし
c++はcとの互換性から使われてるし

後 実用言語って何よ
ocamlだってhaskellだってscalaだって実用言語だよ
「簡単」とはみなされないだけで
0272デフォルトの名無しさん2015/05/19(火) 02:04:40.28ID:Ri/mEtfG
道具において、
使っている人が少ないから難しいとはならないが、
使っている人が多いなら簡単は、真だ。
だって、実際多くの人が挫折せずに使えているのだから。
その程度には簡単ということ。理解できないレベルではないということ。

たくさんの関数型言語が有り、そうでない言語より優れているのは
明白なのに、いまいち普及しないのは何故だと考える?
答えは、難しいからだ。
多くの人がCからC++にステップアップした。
今はそうでもないが、その昔は猫も杓子もC++を使っていた。
C++が簡単だったから問題なくステップアップできたわけ。
同じ事が関数型言語でも起こると思う?
Java→Scala、C#→F#にみんな移行出来ると思う?
0273デフォルトの名無しさん2015/05/19(火) 02:09:03.78ID:JW8ZA2Yc
ないわーwww
0274デフォルトの名無しさん2015/05/19(火) 02:11:36.89ID:Ri/mEtfG
>難しいから使わない 簡単だから使うとはならんし

ここが違うんだよね。
難しいから「使えない」 簡単だから「使える」 が正解。
C++はTIOBEで第三位。多くの人が「使える」言語。
多くの人が理解できない関数型言語と違って。
こんなに誰でも使ってるC++を難しいといってしまってよいの?
世の中には家を建てたり自動車を作ったり心臓移植までしている
人たちが居るというのに。ハードル低すぎじゃね?
0275デフォルトの名無しさん2015/05/19(火) 02:30:37.22ID:JW8ZA2Yc
宣言文の文法がそもそもあんだけトチ狂ってんのに「簡単」とか言われましてもw
0276デフォルトの名無しさん2015/05/19(火) 02:35:55.87ID:ZmlYhIi9
std::function<bool(int)> callback = [&](int n)->bool{
  return assign(n);
};

大変読みやすいです。
0277デフォルトの名無しさん2015/05/19(火) 02:45:13.52ID:ZmlYhIi9
関数型の欠点は、従来の言語より優れていると言われる割に、優れている部分を
示せないことではないでしょうか。

偉大なる◯◯で使われているという話はよく聞くのですが、BASICもCも偉大なる◯◯で
使われているのは変わりありません。

マップ・リデュースで一万コア・・・なんて話も良く聞かされるのですが、そもそも
一万コアのマシンを持っていませんし、C++にもそういったライブラリはあるのですが、
今のところ使いどころはありません。

ですから全く使いたいと思えないのです。
0278デフォルトの名無しさん2015/05/19(火) 02:53:32.65ID:JW8ZA2Yc
使いドコロがない世界で生きてるんなら使わなきゃいいじゃん。終了。
0279デフォルトの名無しさん2015/05/19(火) 03:22:45.75ID:zSes0jIt
C++の機能のそれぞれの背景は多様で、グランドデザインは無いと言っていい。
一貫しているのは「C++が提供している機能を使わないプログラムは、それに伴うコストを負わない」っていう箇所くらいだ。
これに反しない限りはどんな仕様にもなっていく。文法もアドホックな部分が多い。

以下反駁:
>使っている人が少ないから難しいとはならないが、
と言った口で
>答えは、難しいからだ。
と言う論理の無さに震える。

多くの人が使えるなら簡単っていうことは、中国語が簡単だと言いたいんだろうな。
0280デフォルトの名無しさん2015/05/19(火) 03:25:32.55ID:T8F04qpp
>>268
そんな宗教じみたもん無視するのがよろし
問題と向きあえば、最適な設計は自ずと導かれるもんよ
0281デフォルトの名無しさん2015/05/19(火) 03:25:54.73ID:Ri/mEtfG
関係ないね。
モナドが難しすぎるから。
これに尽きる。
工学部出てても、圏論なんて聞いたこともねぇってやつがほとんど。
Wikiからして抽象的でそうとうの数学センスを要求される。
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8A%E3%83%89_%28%E5%9C%8F%E8%AB%96%29

しかもC++のマイナー機能やSFINIEをつかった複雑なテンプレートと違って、
関数型言語においてモナドは必須事項。
慣れてきたらそのうち・・・というわけにはいかない。
0282デフォルトの名無しさん2015/05/19(火) 03:29:07.25ID:sK241CbT
ま、一般大衆はC++のサブセットで満足していて、それは彼らが「使える」程度には簡単、ということなんだろうね。
>>272さんの言う通り、使っている人が少ないからって難しいとは限らないが、果たしてHaskellはどうだろう。
個人的には普及の障害になるくらい難しいとは思わないけど…
0283デフォルトの名無しさん2015/05/19(火) 03:32:47.88ID:ZmlYhIi9
難しくてもメリットが上回れば使われると思います。

メリットが示されないので使われないのですよ。
0284デフォルトの名無しさん2015/05/19(火) 03:45:36.89ID:sK241CbT
うーんそうかなあ、モナド難しいかあ。
初学者だった頃に引っかかった記憶はあんまりないけどなあ(むしろ(.)と($)にハマった。発狂しそうになった)。
だけど小学生の姪っ子をリストモナド使えるように教習しろって言われたら… 出来る自信ないわ。


ZmlYhIi9さんの意見にはぐうの音もでない。一般人がHaskell使って直接的に嬉しいことって、特にない気がするよ。
でもHaskellのスローガンは「可能なかぎり成功を避けろ」だからね。
人気ないのはむしろいいんだ。
0285デフォルトの名無しさん2015/05/19(火) 03:56:54.04ID:Ri/mEtfG
>多くの人が使えるなら簡単っていうことは、中国語が簡単だと言いたいんだろうな。

偏差値40の中国人でも中国語をつかえることを考えると、中国語は簡単なんだろう。
中国語が本当に難しくて偏差値60無いと理解できない言語というなら、中国は滅亡するだろ。

た・だ・し、通訳は難しい。
だから中国語を通訳できる人は少ないし、それだけで飯が食える。
そして、プログラミング言語がネイティブな人は居ない。

しかしこんなことは言葉遊びだ。
TIOBE第三位の多くの人が日々普通に使ってる言語を「難しい」「理解できない」と感じるなら、
単にその人の能力が標準以下なだけ。
多くの人が理解できないほど難しいのであればTIOBE第三位になるのは無理。
関数型言語がまさにそれ。多くの人が理解できない。TIOBE第三位なんて絶対無理。
0286デフォルトの名無しさん2015/05/19(火) 03:58:58.68ID:T8F04qpp
圏論がどうのといって悦に入ってる連中が障害じゃないの
手続き型言語のプログラマで有限オートマトンがどうのという連中はいないもの
Haskellには妙ちくりんな尾びれがついちゃってる感じ
0287デフォルトの名無しさん2015/05/19(火) 04:13:41.82ID:ZmlYhIi9
C++は非常に簡単で、簡単であることそのものがメリットになっています。

ですからよく使われるのです。
0288デフォルトの名無しさん2015/05/19(火) 04:31:48.32ID:F2BOffyE
池沼は病院から出すなよ鬱陶しい
0289デフォルトの名無しさん2015/05/19(火) 07:19:11.46ID:GUw3UG1p
関数型言語にモナドは必須ってアホか
必須なのhaskelくらいだろ
そもそもwikiは糞だから参考になんねーよ
それにモナド使うのに圏論いらんし 型クラスの定義見ろ
0290デフォルトの名無しさん2015/05/19(火) 09:13:31.09ID:WmVvlWKU
>>284
6年前のSPJ発言か、良い引用だ
しょうもない格付け君は wall of bristle に断絶されてればいいよw
0291デフォルトの名無しさん2015/05/19(火) 09:17:44.17ID:MzsPfgik
理論上は抜けだらけだが実用上問題ないプログラムを書けるかどうか
0292デフォルトの名無しさん2015/05/19(火) 09:45:45.16ID:JTaO2nL4
>>285
中国語が難しいか=C言語が難しいか
通訳が難しいか=C++が難しいか
ですね、わかります。
0293デフォルトの名無しさん2015/05/19(火) 10:45:34.91ID:0SacHJgX
C++が難しいって発言をそのまま捉えてるアホ初めて見た
0294デフォルトの名無しさん2015/05/19(火) 11:35:26.14ID:ZsRP29y3
C++コンパイラの保守が難しい
そこまで考えてるやつはC++は難しいと言う
そんなの想定外だとか未来の技術で簡単になるとかいう無責任なやつがC++は簡単と言う

このアンチパターンが半永久的に繰り返されるだろう
0295デフォルトの名無しさん2015/05/19(火) 12:48:04.34ID:AXTyPS+t
言語選定レベルで悩んでいるようじゃ初級プログラマだと言わざるをえない
0296デフォルトの名無しさん2015/05/19(火) 12:59:10.60ID:AXTyPS+t
言語は目標を達成するための道具だろ。
各々好きな言語でプログラミングして、最後に結合する作業が簡単にできるプラットフォームがあれば良いね。
単なるリンカではないぞ。

誰か作ってよ。
0297デフォルトの名無しさん2015/05/19(火) 12:59:54.89ID:AXTyPS+t
てか未踏ソフトで応募して見ようかな
0298デフォルトの名無しさん2015/05/19(火) 13:14:35.76ID:D1tZIuIK
F# は3月のTIOBE11位 (関数型トップ) です...
0299デフォルトの名無しさん2015/05/19(火) 13:15:13.92ID:db2F8MVh
                  ,.-―: ̄`ー::::::::::、
                /::::::::::::.::::::::::::::::::::::::::::`::、、
               /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
               l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
               l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
              l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
              l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
              ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
             ヽ:::::    ̄ .)::;  l  ̄   l::::/
              、:::::..   /:::; .,-、     l:::/、
               ::::::::  ゝヽ- ー' 、     l::/,    < 結城氏はリスペクトせよ
                ,:、:: / ,--、,-.、_ l     /
    ,.:':'゙'゙'゙:゙'゙':';.        、::、 `ー ̄-'    /
   r゙ ,.: :;;;:: : : :           、::ヽ      /:
   | : ::::~';::--ー'ー-----ーー;;:'゙ .: :` ‐- 、  |
  ,i    ::::::::::::::::::::::::::::::: ::: :ヾ        i
  r'     ::::::::::::::::: : : :::::: :::::  ::::. .      /
  |      :::::::::: : : : : ::: ::  ::         イ
  i      : : ::::::::::: : : ::::::: :         |
  |      ,.;イ-- .,           ,... -' i
   i      ,.;':/   ゙'ー-.,_ i    ,.イ::  /
  .i::::   /:/        ̄i   / ゙i   |
  │::  ノ::/         |   i   |  |
 r':: イ:::::i゙            |  |   i   |
 |:: | ヽ '-.,         ヽ 〈    ヽ ヽ.,
 i, , '-, ゙'ー'ー'          ヽ、`,ー、  `'ー'ー
0300デフォルトの名無しさん2015/05/19(火) 13:21:14.57ID:TOz5556s
https://twitter.com/motoken_tw/status/452009450313097216

岡部事件、
可能であれば、お仲間にもご周知を!
0301デフォルトの名無しさん2015/05/19(火) 20:17:28.97ID:JXMeaZgm
たとえば皆、Haskellで各自思い思いに「倉庫番」を作ってみてくれ。
「パックマン」や「スターソルジャー」でもいい。

完成させるのに果たして圏論のどのような理解が必須だろうか?

あるいは、圏論の何を理解していればより効率的に作れる、
またはより効率的なものが作れるだろうか?

モナドはどこまで深く理解していなければならないのだろうか?

実際にやってみれば分かるが、思ってたよりも浅いモナドの理解で作れるはずだ。
恐らく入門書に書かれている程度の理解で十分。
圏論にいたっては意識すらしなくても良いはず(知らずに使ってる事はあるかも知れん)。

今時のマシンで普通に動くこの程度のアプリケーションで良ければ、
モナドが難しすぎるから作れないなんてことは絶対にない。

それなのに、声のでかい一部のバカが無責任に難しいと連呼するから、
門の前で中をうかがっている入門予備軍を怖じ気付かせる。
0302デフォルトの名無しさん2015/05/19(火) 20:30:46.38ID:JW8ZA2Yc
描画の話してんの? SDLバインディング使うなら単なる手続き型のプログラミング(嬉しくない)。
盤面上のデータ操作でもまあLearn you Haskellくらいを読んでれば十分だろ。
実際のところモナド変換子程度まで理解してれば困ることなんて殆どない。

Haskell難しいと連呼するのはHaskell触ってないやつ(いや確かに難しいけど)。
Haskellerが初心者に向かって圏論が〜なんてわけのわからん
威嚇をする実例はなど別にないと思うのだが。
0303デフォルトの名無しさん2015/05/19(火) 21:15:19.01ID:Ri/mEtfG
現時点でHaskellが難しくないことを証明するのは無理。いくら何言っても無理。
Haskellが普及して、TIOBE第三位になるぐらいに広く使われるようになって初めて、
Haskellは多くの人が理解できる程度に難しくない、ということが、
統計的に証明できる。
0304デフォルトの名無しさん2015/05/19(火) 21:27:02.56ID:SB6c5oWN
>>302
圏がどう射がどうとか語り始めるモナドチュートリアルは見たことある

モナドは何であるかじゃなくてどう使うかに絞った解説があればいいのに
Stateモナドもスタック実装して終わりで え?こっからどうやって実用するの!?とか思った記憶
0305デフォルトの名無しさん2015/05/19(火) 21:30:12.17ID:jGcxlJfu
だから言語の普及度は言語の難易度で決まるわけじゃないだろ
haskell難しいけど難しいから流行ってないわけじゃない

とういうかhaskellがたとえこの世で最も簡単な言語であったとしても
TIOBE第三位になる事はないから
0306デフォルトの名無しさん2015/05/19(火) 21:31:23.95ID:1/0u9cTV
偏差値40だろうが30だろうが日本人なら日本語使えるから日本語って簡単なんだね
0307デフォルトの名無しさん2015/05/19(火) 21:44:28.21ID:JW8ZA2Yc
>>304
様々な層に向けたそれぞれのチュートリアルがあるだけだろ。
数学的指向があったら最初に圏や関手の話から導入された方がわかる。

それに各モナドごとの個別チュートリアルは際限がなくなるからなあ。
モナドはなんというか見よう見まねで書き続けてると
ある時ふっ、とわかるんだよね。まあそういうもんだと思うしかない。
0308デフォルトの名無しさん2015/05/19(火) 21:55:23.18ID:Ri/mEtfG
>>305
お前は本当に頭が悪いな。
Haskellが普及してTIOBE第三位になれば、
Haskellは多くの人が理解できる程度に難しくない、ことが
統計的に証明できるんだ。
逆は知らん。
もし、Haskellが難しくなかったらTIOBE第三位になれるはず、とは誰も言ってない。
逆裏対偶ぐらい、習っただろ。
0309デフォルトの名無しさん2015/05/19(火) 22:03:44.54ID:1/0u9cTV
誰かHaskellが難しくないって言ってる人いるの?
誰と戦ってるの?
0310デフォルトの名無しさん2015/05/19(火) 22:29:33.06ID:Db21bduT
モナド変換子難しいよお。。。
0311デフォルトの名無しさん2015/05/19(火) 22:46:21.27ID:sK241CbT
Ri/mEtfGさんは正しいこと言ってるとおもうよ。確かに、Haskellがずっと普及したなら、難しくはなかったってことの証明になるね(もちろん三位は誇張だろうけど)。

SB6c5oWNさんが言うように、モナド実用例… クックブックのようなもの? はあんまし見かけないなあ。何でだろう
0312デフォルトの名無しさん2015/05/19(火) 22:53:16.69ID:0SacHJgX
モナドの実用例ならhackageにゴロゴロ転がってるじゃん
それだけじゃ入門者に優しくないって事ならその通りだけど。
0313デフォルトの名無しさん2015/05/19(火) 22:57:09.05ID:jGcxlJfu
>>308
だからTIOBEの順位と難しさは無関係だっつーの
言語の普及度は言語の難易度で決まるわけじゃない
つかhaskell難しくないなんていってねーし
0314デフォルトの名無しさん2015/05/19(火) 23:04:59.38ID:jGcxlJfu
第一 TIOBE()の順位なんかより
高名なプログラマの意見の方がずっと参考になるだろ
例えば coders at workとかさ

難しいところを挙げろというが逆に簡単なところを挙げてほしいくらい
0315デフォルトの名無しさん2015/05/19(火) 23:06:55.74ID:sK241CbT
>>312
言われて探してみたんだけど、たとえばリストのdoの例は見当たらなかったよ。
初めのころ、確か、すごいH本で解説を読んで、感動した記憶がある。

あとはParsecの解説サイトでApplicative、Monadの用例を見て、雰囲気をつかんだ(気になった)。
0316デフォルトの名無しさん2015/05/19(火) 23:17:27.46ID:JXMeaZgm
>>315
気になっただけで、実際は雰囲気すら掴めなかったのはなんで?
そこの解説になにか問題があったの?
0317デフォルトの名無しさん2015/05/19(火) 23:17:59.37ID:0SacHJgX
>>315
リストのdo記法は考えてなかったわ。
モナドを自作するとこんな事が出来るとか、そういう事を指して実用って言ってるのかと思ってた。すまん。
0318デフォルトの名無しさん2015/05/19(火) 23:50:39.22ID:Ri/mEtfG
>>313
>だからTIOBEの順位と難しさは無関係だっつーの

関係あるっつーの。
少なくともシェアの大きい言語は、多くの人が理解できてるんだから、
その程度には難しくないことが統計的に証明されるだろ。
変な話、凡人でも理解できてるんだから。
難しくて一部のエリートしか理解できないってことは無いんだよ。
0319デフォルトの名無しさん2015/05/20(水) 00:01:02.66ID:xG2YivgY
>>318
>少なくともシェアの大きい言語は、多くの人が理解できてるんだから
使っているかといって理解できいるとは限らなくね?
>変な話、凡人でも理解できてるんだから
>難しくて一部のエリートしか
なお一部のエリートや天才レベルでも難しいと感じている模様
日本でも某ocaml使いとか愚痴ってたような
ていうか俺も仕事でc++を使うときあるけどc++を理解しないで使ってる連中の頭をかち割りたいね
0320デフォルトの名無しさん2015/05/20(水) 00:02:05.71ID:j7/9a0p9
ここにいる諸兄にはおわかりでしょうがこの荒らしはプレステを手に入れてスーファミをこき下ろしてる連中と同じメンタリティの奴です
弱い自分が強いと思いこめる武器を手に入れて暴れてるだけです
どうぞ生温かくても冷たくてもいいので見捨ててやってください
0321デフォルトの名無しさん2015/05/20(水) 00:06:06.64ID:xG2YivgY
つか理解されてるから使うんじゃくて仕事があるから使うんだろ
javaやjavascriptだって全然分かってない人が使ってたりしますし

ていうかtiobeって話題になってる言語を選定するサイトじゃなかったっけ?
0322デフォルトの名無しさん2015/05/20(水) 00:39:39.55ID:hcXMT3AI
"language programming" でググってヒットした件数らしい。
使ってる人口じゃなくて、使っててこれどう書くのーってネットに書いてる人口を反映してるよね。
前者が多ければ当然後者も増えるが、難度が増しても後者は増える。
0323デフォルトの名無しさん2015/05/20(水) 00:47:54.79ID:tyUici8H
>>316
や、書き方が悪かったよ。今でもモナドの使い方を淀みなく完璧に理解してるか? って自問したら、そこまでの自信は無いなあ。と思ってさ。そのサイトの解説はグッドでした。

>>317
いやいや俺なんてHaskell歴5年くらいになるけど、未だにMonadインスタンス自作したこと無いぜ… (deriving除く)
0324デフォルトの名無しさん2015/05/20(水) 01:06:36.36ID:sW1Q6d6X
>>323
俺もHaskell歴そのくらいだけど、自作Monadは2個だけだよ。
ほとんどの事は既にあるモナドで足りるよね
0325デフォルトの名無しさん2015/05/20(水) 13:10:54.59ID:1z9LSkg7
「モナドというものは作ろうと思って作るのではなく、
作った型が実はモナドだったということが多いのです」
みたいなことをすごいH本か何かで読んだ
0326デフォルトの名無しさん2015/05/20(水) 14:32:34.25ID:XsmEqg/3
それは、Monadってそんなに自然なものなんだよって言ってるんだと思うが、
オレは、FunctorやApplicativeに比べるとえらく不自然だなって思う
0327デフォルトの名無しさん2015/05/20(水) 16:10:01.72ID:2N8UJ/7p
ラムダ計算で作れるデータ構造は大体 (->) で出来ている
(->) で作れる型はあれもこれもモナドだったから大半の型はモナドになる

モナドクラスは表向きは個々のインスタンスに依存しないふりをしているが
本当は (->) の力が無ければ何も出来ない
0328デフォルトの名無しさん2015/05/20(水) 19:36:47.33ID:dadGQyQV
>>323
モナドを完璧に理解することが目的(目標)なら、がんばれとしか言いようがない。

でも、何かを作ることが目的で、その手段としてモナドの完璧な理解が必要だと考えているのなら、
落ち着いて、完璧な理解までは必要としない方法を模索してみることを勧める。
0329デフォルトの名無しさん2015/05/20(水) 19:48:41.11ID:XsmEqg/3
>>327
> ラムダ計算で作れるデータ構造は大体 (->) で出来ている
> (->) で作れる型はあれもこれもモナドだった
これはどういうことを言ってるの?
0330デフォルトの名無しさん2015/05/20(水) 21:00:24.87ID:+UYg+JjB
>>329
関数に型を付けたら実はそれは>>=と同じ構造を持ってました
0331デフォルトの名無しさん2015/05/20(水) 22:24:23.25ID:2N8UJ/7p
newtype Foo a b = Foo (a -> b)
newtype Bar a b = Bar ((b -> a) -> a)
の二つが基本
他に類似品みたいなのがいっぱいあってみんなモナド
b -> (c -> a) -> a
b -> (b -> c -> a) -> a
(b -> a) -> (c -> a) -> a
0332デフォルトの名無しさん2015/05/20(水) 22:38:43.62ID:XsmEqg/3
>>331
どれもモナドにはみえないんだが、
どう見たらモナドになるんだ?
0333デフォルトの名無しさん2015/05/20(水) 23:45:21.62ID:tyUici8H
>>328
ありがとう。俺自身は、使う分には不自由してないんだ。初心者向けにモナドクックブック書いたら売れるかなあ、って思ってさ。

>>331
Fooがリーダーモナドで、Barが継続モナドですよね。
下のもモナドになるの?
0334デフォルトの名無しさん2015/05/21(木) 00:00:34.02ID:de5tZE8e
CがHaskellのコード中に直接書けるようになったと聞いて駆けつけました
0335デフォルトの名無しさん2015/05/21(木) 00:36:31.12ID:CoyRjUjS
そのまま帰っていいぞ
0336デフォルトの名無しさん2015/05/21(木) 08:06:45.42ID:8IjR4TZr
*Hask圏のなかにいる*
0337デフォルトの名無しさん2015/05/22(金) 16:33:13.83ID:rEwHo9Uc
週末 inline-c で遊べるように haskell-platform-2014.2.0.0 用意できた
build環境には debootstrap + schroot が便利という知見を得た
0338デフォルトの名無しさん2015/05/22(金) 21:31:26.16ID:ISp/Va/9
わぁい知見 あかり知見大好き
0339デフォルトの名無しさん2015/05/23(土) 11:21:43.20ID:0SRxUMd7
知見(環境構築で苦しみたくないという気持ち)
0340デフォルトの名無しさん2015/05/23(土) 14:14:24.76ID:UgSbq8g0
誰だって論理に集中したい筈だ
0341デフォルトの名無しさん2015/05/23(土) 16:41:37.34ID:lgd4dVFx
環境構築ってクソつまらんのに大抵の言語でハマりどころ盛り沢山だからな
0342デフォルトの名無しさん2015/05/23(土) 18:06:20.76ID:BXmR/qwL
このツール使えねえと思ったら正直に全否定すれば苦しまなくてすむし
その方が建設的かもしれない
LinusがCVSやSubversionを全否定したみたいに
0343デフォルトの名無しさん2015/05/23(土) 18:35:43.05ID:JvMC0aIf
インストーラと別にコマンド叩いてDevkit入れる必要があるうえ手作業で証明書入れないとパッケージ管理システム使えない国産言語が初心者向けなくらいですし
ほんと余計な苦労させられる
0344デフォルトの名無しさん2015/05/23(土) 20:15:12.23ID:fe/IYzrE
LinusはC++も扱き下ろしてる
0345デフォルトの名無しさん2015/05/24(日) 09:43:51.03ID:cgfZawIe
StroustrupもC++はジョークだったと言ってる
0346デフォルトの名無しさん2015/05/24(日) 19:42:49.77ID:3b2NjmUt
cabal installしようとしたらbaseのバージョンが今のより古くないとダメだと言われた。
さすがにbaseの衝突回避は無理か
0347デフォルトの名無しさん2015/05/24(日) 20:15:13.71ID:XsNzee8o
>>346
俺なら、そのインストールしようとしているパッケージがアップデートされるまで、
下記の方法でしのぐ。

そのパッケージの .cabal ファイル内の build-depends の項にある
base のバージョン指定を高くする。

cabal configure
cabal install

コンパイルエラーが出たらその箇所を修正し再度インストール。
エラーが出なくなるまで繰り返す。

テストが用意されているパッケージならテストもしておいた方がいい。
0348デフォルトの名無しさん2015/05/24(日) 21:27:46.60ID:+ZfT5bPb
目的のパッケージが更新されたら通知してくれるソフトくれ
0349デフォルトの名無しさん2015/05/24(日) 22:55:26.97ID:XsNzee8o
>>348
せっかく Haskell があるのだから、試しに作ってみてはどうだ?
いろいろ勉強になるかも知れん。

俺は特に必要とはしていないから取りあえず興味ないが。
0350デフォルトの名無しさん2015/05/24(日) 23:21:49.16ID:vsIUw6N4
>>348

#!/usr/local/bin/zsh

local PACKAGE=$1
cabal list --simple-output --installed $PACKAGE | tail -n 1 | read CURRENT
cabal list --simple-output $PACKAGE | egrep "^$PACKAGE " | tail -n 1 | read LATEST
test $CURRENT = $LATEST

を package-is-latest.sh とでもしてファイルにしておいて、パスを通しておく。
で、
cd yourproject; zsh package-is-latest.sh hogehoge || echo UPDATEEEEEEEEEDDDDD
をcronに登録するなりして適当なタイミングで実行するようにしておく。
echoのメッセージをsendmailにするなり、cabal install hogehogeにするなり、好きにしろ。
0351デフォルトの名無しさん2015/05/24(日) 23:36:19.30ID:vsIUw6N4
なんか最近のcabalはいろいろ便利になってるらしいよ。

Before
alias ghci="ghci -package-db .cabal-sandbox/*-packages.conf.d"

After
alias ghci="cabal exec ghci"


他にも
cabal exec runhaskell でsandbox考慮してコンパイル実行とか、
cabal exec ghc-pkg list でsandbox内のパッケージ列挙とか。
0352デフォルトの名無しさん2015/05/24(日) 23:52:10.59ID:vsIUw6N4
すまん間違えた、
alias ghci="cabal exec -- ghci"
の方がベター。cabal repl と比べて、hsファイルを渡して実行できるとこがよい。らしい。

おまえらも haskellマメ知識 晒してけ。
0353デフォルトの名無しさん2015/05/25(月) 00:01:02.95ID:2thWXfeV
そんなのマメ知識とか言われても困る
0354デフォルトの名無しさん2015/05/25(月) 08:21:00.05ID:GzRiv4UP
#知識for糞ザコHaskeller
0355デフォルトの名無しさん2015/05/25(月) 11:39:32.92ID:qzlNoXZk
>>346
あきらめてGHCのバージョン上げましょう
0356デフォルトの名無しさん2015/05/25(月) 22:26:35.18ID:gWg9G8z2
>>355
インストールしたいパッケージが想定しているより、
今のGHCのバージョンが高いから base が新しすぎると言われているのでは?
0357デフォルトの名無しさん2015/05/26(火) 07:43:43.97ID:shSvTWy+
C/C++なら依存するライブラリを#ifで切りかえるね
プリプロセッサを捨てて一本道になった言語は依存関係が一つ壊れるだけで致命傷になる
0358デフォルトの名無しさん2015/05/26(火) 12:56:29.60ID:Y4vROO87
Cのプリプロセッサ(笑)
0359デフォルトの名無しさん2015/05/26(火) 13:07:38.46ID:xYtlptqc
>>357
>プリプロセッサを捨てて

とりあえずGHCのことじゃないことだけはわかった
0360デフォルトの名無しさん2015/05/26(火) 13:52:36.05ID:nTvEmyje
プリプロセッサが悪用されるのは意識が高い人間が使った時だから
嘲笑することで意識を低下させるのはある意味正しい
0361デフォルトの名無しさん2015/05/26(火) 19:09:40.90ID:XXhPjawb
意識が高い連中は隔離してやろう
彼らが楽しく砂遊びできる環境
0362デフォルトの名無しさん2015/05/26(火) 21:26:37.23ID:8xzkswfT
こうどなあおりあい
0363デフォルトの名無しさん2015/05/27(水) 08:11:39.10ID:tHNT180U
[クェィザィ.クォート]
0364デフォルトの名無しさん2015/05/27(水) 14:47:53.27ID:IRVvjMC1
http://kenokabe-techwriting.blogspot.jp/2015/05/esumiicamloebaocaml.html?m=1


おい、岡部が住井先生を相手に公開スキル対決したいと言ってるぞ!
会場どこにする?
0365デフォルトの名無しさん2015/05/27(水) 16:37:40.89ID:j/Edc2+c
>>364
うぜえからここに引用されてるドーキンスの文章でも暗誦してろよ
http://d.hatena.ne.jp/NATROM/20141231/p1
0366デフォルトの名無しさん2015/05/27(水) 19:47:09.26ID:NxdwWN3a
>>364
とにかくまず「先生」つけるのやめろ
お前は家来でも俺たちは違う
話はそれからだ
0367デフォルトの名無しさん2015/05/27(水) 19:58:53.76ID:dwpwEnF2
みんな時間を守らせるのが好きだから
もうずっと未解決の問題に対しても
制限時間を設定してやれば時間内に成果が出るんじゃないかと錯覚してしまう
0368デフォルトの名無しさん2015/05/27(水) 20:22:08.94ID:yzh13mxX
こうあおどなりあい
0369デフォルトの名無しさん2015/05/27(水) 20:22:49.61ID:iCUdlE3X
てか毛の壁ってなんでこんなに粘着発狂してるの?
現実世界に友達が居ないから、ネットで相手してもらえるのがうれしいの?
仕事無いから暇なの?炎上マーケティング?
それとも、ネットであやふやなことを適当に言いまくって、
誰かに指摘させることで自分がスキルアップできる戦略?
0370デフォルトの名無しさん2015/05/27(水) 20:27:57.54ID:B0g6EoUC
 発 者 同         . 。_   ____           争 
 生 同 .じ     .    /´ |  (ゝ___)          い 
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、 
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j      
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´ 
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\ 
             /   ..:.:.}   /   |∨ ` ̄ 
            /   ..:.:./    |   丶 
           / _、 ..:.:.:.{    .{.:.:.   \ 
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ 
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ 
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:} 
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:} 
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X 
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y 
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\ 
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄> 
0371デフォルトの名無しさん2015/05/27(水) 22:10:38.46ID:3uTYMaQf
争いっつーたって 反論に対して発狂してるだけやん
どうしろと
0372デフォルトの名無しさん2015/05/27(水) 22:23:47.94ID:UvDWsdEw
NGしろ
0373デフォルトの名無しさん2015/05/27(水) 22:39:08.49ID:j/Edc2+c
諸君、議論するのをやめたまえ
0374デフォルトの名無しさん2015/05/27(水) 22:52:27.13ID:CaKPB6kG
こうどな、おどりあい
0375デフォルトの名無しさん2015/05/28(木) 03:03:31.40ID:gCuhL1rI
でもあんな調子じゃ人と関わる仕事は無理だよね。どうでもいいけど。
0376デフォルトの名無しさん2015/05/28(木) 07:50:15.34ID:oT6P6+n+
反論してる時点で同じ土俵に乗ってる
基地外(特に構ってちゃん系)は一切反応せずまるで存在しないかのように振る舞うのが一番効くと思うけど
0377デフォルトの名無しさん2015/05/28(木) 08:58:11.27ID:clFLgS2F
>>373
おいwwwwwwww
0378デフォルトの名無しさん2015/05/28(木) 12:15:04.59ID:hQk09exV
結城さんが面白がって彼を弄るから余計に彼が暴れるんだよな・・・・
0379デフォルトの名無しさん2015/05/28(木) 12:57:16.48ID:q7N6UgpT
これが積極的に弄る平和主義なんだよな
いやなら積極的代案を出せ
消極的異論は認めない
0380デフォルトの名無しさん2015/05/28(木) 15:27:38.42ID:4gR+9k9M
インテリ層の娯楽はいつの世も残忍よな
コロシアエ-
0381デフォルトの名無しさん2015/05/28(木) 19:32:48.07ID:TqklPbnT
>>378
えっ、結城さんそんなことしてるの?
あの人だけはバカなことに関わらないと思ってたのに。
0382デフォルトの名無しさん2015/05/28(木) 20:47:10.51ID:q7N6UgpT
一切誓いを立ててはならないんだよな
バカなことに関わらないという義務はない
どうするかは自由
0383デフォルトの名無しさん2015/05/28(木) 21:58:53.30ID:gCuhL1rI
俺の想像だけど、毛の壁は東洋哲学全快なんだと思う。
でも数学もソフトウェアも西洋の物だから。
それを変に東洋風に解釈しなおして可笑しくなっているんじゃないかと予想。
0384デフォルトの名無しさん2015/05/28(木) 23:05:28.91ID:gCuhL1rI
そんで何かあったなって考えてたんだけど、ハンプティーダンプティーだ。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%83%97%E3%83%86%E3%82%A3%E3%83%BB%E3%83%80%E3%83%B3%E3%83%97%E3%83%86%E3%82%A3

「「名誉」という言葉をあなたがどういう意味で使っているのか、よくわからないわ」アリスが言いました。
するとハンプティ・ダンプティは馬鹿にしたような笑いを顔に浮かべました。
「もちろんわからないだろうさ、僕が説明しないかぎりね。僕は「もっともだと言って君が降参するような素敵な理由がある」という意味で「名誉だ」と言ったんだよ!」
「でも、「名誉」という言葉に「もっともだと言って君が降参するような素敵な理由がある」なんて意味はないわ」アリスは抗議しました。
「僕が言葉を使うときはね」とハンプティ・ダンプティはあざけるように言いました
「その言葉は、僕がその言葉のために選んだ意味を持つようになるんだよ。僕が選んだものとぴったり、同じ意味にね」
0385デフォルトの名無しさん2015/05/29(金) 11:33:50.58ID:UvEliUlK
ハンプティダンプティの言葉はウソというより秘密という方が近い
詐欺は犯罪だが秘密は犯罪ではない
0386デフォルトの名無しさん2015/05/29(金) 14:59:20.11ID:QoqBsPX0
賢者は相手が無知なら相手の解る言葉の組合せで話してやるもの。
上から衒学的単語を浴びせかけるのではなく、自ら同じ知識水準まで降りていって話すものだ
0387デフォルトの名無しさん2015/05/29(金) 17:40:28.18ID:2KSZyB2Q
>>383
件の人物はどうでもいいが、それにかこつけて東洋哲学や数学をdisるのはやめてほしいw
近代、既に井上円了や西田幾多郎をはじめ、優れた哲学思想者がいたし、近世にさかのぼっても、
和算は優れた数学の体系とみなしうる。先人が件の人物の主張を聞けば、へそで茶を沸かすだろうw
0388デフォルトの名無しさん2015/05/29(金) 17:54:20.08ID:2KSZyB2Q
>>386
まったくその通りです。>>387に絡めて言えば、東洋思想や仏教全般に不案内な人々に対して、
相手の解りやすい論理の枠組みで対話し、西洋哲学だけが思考の最高峰に立つのではないことを、
米国や西欧で知らしめたのが、鈴木大拙。鈴木が伝えた"禅"は以後、世界的な影響を保っている。
0389デフォルトの名無しさん2015/05/29(金) 18:41:37.14ID:UvEliUlK
でもそういう偉い人自身より「もしドラ」みたいに便乗してる人の方が「解りやすい」
と評価されるパターンが多い
だから解りやすさという基準は使いたくない
0390デフォルトの名無しさん2015/05/29(金) 18:50:35.89ID:rC7lKM23
スレ違い氏ね
Haskellerってこんな胡散臭い似非哲学者ばっかなの?
0391デフォルトの名無しさん2015/05/29(金) 20:11:55.35ID:eyi3DmdL
>>378
「面白がって」ってのは全然あたってないと思うけど。
0392デフォルトの名無しさん2015/05/29(金) 20:57:19.41ID:5MhrblBL
また変なのが沸いたもんだな。禅がどうとか。関数型はこういうやつの集まりなのか?
技術者ならありのまま受け入れろよ。空想に浸ってんじゃねーよ。禅も糞もあるかよ。
再解釈や独自の世界観も要らん。そういうことがしたければエヴァンゲリオンの監督でもしてろ。
0393デフォルトの名無しさん2015/05/29(金) 21:32:12.05ID:CaA5FwTY
雑談。Haskell のコメントの -- って何かから受け継いだの?
0394デフォルトの名無しさん2015/05/29(金) 21:59:14.56ID:6mGsQHLK
>>390 >>392
ただのあおりだと思うけど、長く続ける話でもないので、一応、一度だけ返答を。
Haskellどころかプログラムコード全般を書くのに、禅や、井上・西田・鈴木の思想に触れる必要なんて、
まったくなく、主張もしてません。そういう類のことをやって悦に入っているのは、件の人物です。

>>387>>383への、>>388>>386への話に対する"例示"として出しただけです。
いわば、プログラムでいうところの、特定の箇所のみ有効な、ローカル変数としての扱いの話題で、
Haskellスレ全体に及ぶグローバル変数的な話題ではありません、お間違いなく。

なお、Haskellは意図せずに変数がグローバルに扱われることを防ぐ手立てが、独特かつ学びがいも
あるので、興味があるのなら、各種情報をあたってください。
0395デフォルトの名無しさん2015/05/29(金) 22:24:42.09ID:UvEliUlK
ありのままを受け入れることと
意図しないことを防ぐことは
両立しないと思うがどうするんだ
0396デフォルトの名無しさん2015/05/29(金) 22:28:07.67ID:1bdHe0ko
>>395
時々ありのままを受け入れて
時々意図しないことを防げば良いだけだと思うが
0397デフォルトの名無しさん2015/05/29(金) 23:00:38.74ID:5MhrblBL
ありのまま受け入れた上で、
意図しないことを防げばよい。
相手の言うことをよく聞いて、十分理解したうえで、
それを否定的に考えるかどうかは当然自由だわな。
それを相手の言っていることが、理解できないからといって、
自分の辞書で再解釈し始めると、
会話が通じなくなってきて、あの人みたいになる。
これは最も相手をイラつかせる方法だろうな。
はっきり言ってケンカになる。
0398デフォルトの名無しさん2015/05/30(土) 00:06:51.02ID:y2xM1Hhu
おれは両立しないと思うから意図は無視する
意図的に作ったものと自然にできたものを区別しない
0399デフォルトの名無しさん2015/05/30(土) 01:53:48.06ID:/LSFXZZf
そろそろHaskellの話してくれませんかね
0400デフォルトの名無しさん2015/05/30(土) 08:55:45.75ID:I7OEXYWz
>>390
岡部健(毛の壁)のような最先端が不在だよね
0401デフォルトの名無しさん2015/05/30(土) 11:19:25.28ID:99bpmAVW
芸人の話はもういい
0402デフォルトの名無しさん2015/05/31(日) 07:54:58.92ID:tRtL6h/C
>>381
>えっ、結城さんそんなことしてるの?
>あの人だけはバカなことに関わらないと思ってたのに。

キリスト教徒は愛とか善とか押し売りするクズばっかりで嫌い
0403デフォルトの名無しさん2015/05/31(日) 09:07:02.06ID:6v3o16Hx
結城さんに手出しできなくてプルプルしとるな
0404デフォルトの名無しさん2015/05/31(日) 09:52:05.60ID:y0vichKB
数学ガール、どうなんだろう、チラ見ではめんどくさそうであきらめたんだが
0405デフォルトの名無しさん2015/05/31(日) 10:22:25.59ID:/wZ7j18U
cabal configure && cabal build && cabal sdistすると、Main.hsしか梱包されないんだけど、ソースを全部梱包するにはどうしたらいいですか?

実際のソース
src/Main.hs
src/Util.hs
src/Hoge.hs

梱包されたソース
dist/hoge-0.1.0.0/src/Main.hs

hoge.cabal
――――――――――
name: hoge
version: 0.1.0.0
synopsis: hoge
...
build-type: Simple
extra-source-files: README.md
cabal-version: >=1.10
executable hoge
main-is: Main.hs
other-extensions: FlexibleInstances
build-depends: base >=4.8 && <4.9
hs-source-dirs: src
default-language: Haskell2010
0406デフォルトの名無しさん2015/05/31(日) 10:28:49.84ID:Z+YrU6Ep
エセ哲学で煙に巻く、というと青木淳を思い出す
0407デフォルトの名無しさん2015/05/31(日) 11:16:11.11ID:Y5Q5hqkx
>>405
other-modules
0408デフォルトの名無しさん2015/05/31(日) 11:23:47.90ID:/wZ7j18U
>>407
ありがとうございます
other-modules: Util, Hoge
としたら出来ました。.hsつけちゃダメなんですね
040910人に一人はカルトか外国人2015/05/31(日) 12:47:30.55ID:gFQ+S0pm
★マインドコントロールの手法★

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト

10人に一人はカルトか外国人

「ガスライティング」で検索を!
0410デフォルトの名無しさん2015/05/31(日) 23:07:34.36ID:bhwHs6Kp
すみません、分からないので教えて下さい。
MyData型というのがあるとして、
次のような感じの再帰的なデータ構造を
作りたいのですがどうやって
宣言したらいいのでしょうか?

MyData = [A | B | C | MyData]
0411デフォルトの名無しさん2015/06/01(月) 00:37:34.71ID:7t5thP4d
newtype MyData = MyData [MyValue]
data MyValue = A | B | C | D MyData
0412デフォルトの名無しさん2015/06/01(月) 07:49:51.08ID:2iXePbMK
>>402
憎しみと悪が世の中に満ちて欲しい我らとしては目障りよのう^^;
0413デフォルトの名無しさん2015/06/01(月) 08:39:30.47ID:E7FyS8+c
https://twitter.com/Nico2Justice/status/604465683481530368

岡部氏の本、売れているようだが、これでもまだおまえらは否定するか?
0414デフォルトの名無しさん2015/06/01(月) 10:31:20.23ID:hNOdkfuP
http://i.imgur.com/GyubXO5.jpg

金返せだとw
返金保障はしてないの?
FX本で揉め事起こしておいてよくやるぜ
0415デフォルトの名無しさん2015/06/01(月) 15:23:30.31ID:Z2VsugfR
オアゾの丸善行ったら平積みでベストセラーになってからうっかりして『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』買っちゃった。
あの厚さにしては安いし。
0416デフォルトの名無しさん2015/06/01(月) 21:41:48.25ID:AkSsBG07
*釣り中
0417デフォルトの名無しさん2015/06/01(月) 22:06:25.83ID:K67NswvK
@tanakhよ、速やかに岡部健の記事を抹消しろ
最終警告。なめんな
0418デフォルトの名無しさん2015/06/01(月) 23:47:52.81ID:Y6nutYnE
>>417
直接言えよ
0419デフォルトの名無しさん2015/06/02(火) 06:11:38.24ID:rgUwgwJK
タナコフ、kenokabeに関する記事なんて書いてたっけ?
0420デフォルトの名無しさん2015/06/02(火) 06:33:33.99ID:/sF+2pLL
これは私見ですが、田中氏のAskに誰かが昨日、毛の壁関連のリンク付きで質問をしたのに対して、>>417がクレーム付けてるのではと思います

というのは、田中氏はAskとTwitterを同期させているからです。よって(どこかの誰かがした質問に含まれる)毛の壁リンクも田中氏(のアカウントから自動的)に呟かれることになります。
0421デフォルトの名無しさん2015/06/02(火) 10:16:26.38ID:Tk2gIrJG
sandboxのあるディレクトリは移動するとマズい。ってことに気づいた。

$ cd xxx
$ cabal sandbox init
$ cd ../
$ mv xxx yyy
$ cd yyy
$ cabal install hoge
cabal: No sandbox exists at /.../xxx/.cabal-sandbox
0422デフォルトの名無しさん2015/06/03(水) 08:39:22.30ID:aJoKJBXt
誰か岡部健のMMD作ってくれよ
0423デフォルトの名無しさん2015/06/03(水) 10:26:36.81ID:I/rtMDUu
モナド3則って圏論的にはどうやって出てくるの?
0424デフォルトの名無しさん2015/06/03(水) 10:53:49.25ID:lNaMRMgL
順番が逆じゃないか?圏論で言うところのモナドってのは<T,η,μ>の3つ組が
µ(Fµ) = µ(µF) と µ(Fη) = idF = µ(ηF) を満たすもの、と定義されている。
Haskellのモナドクラスってのは単にμとηに相当する関数を持っていることを要請するだけで、
上の式を満たすようにインスタンスを定義しないと圏論で言うモナドにはならない。

Haskellのモナド3則は、上の式をKlisli starを使って書き直すと出てくるんじゃなかったっけな。
一度やったが、ここだけやっても面白くなかった記憶がある。
0425デフォルトの名無しさん2015/06/03(水) 14:12:43.98ID:I/rtMDUu
>>424
> 圏論で言うところのモナドってのは<T,η,μ>の3つ組が
> µ(Fµ) = µ(µF) と µ(Fη) = idF = µ(ηF) を満たすもの、と定義されている。
なぜそんな3つ組を考えてなぜそういう条件をつけるのかというのは、
ここでは聞いちゃいけなかったのかな?w
圏論の本では天下りに書いてあるだけなので教えてくれるとうれしい
0426デフォルトの名無しさん2015/06/03(水) 17:22:57.96ID:lNaMRMgL
>>425 単位元の存在と結合則だから。
Haskellで何故モナド則が必要かは↓を見れば分かる。
https://wiki.haskell.org/Monad_laws
モナド則を満たさないインスタンスは取り回しが悪い。モナドにする必要性が無い。
f : (Monad m) => ...なジェネリックな関数の振る舞いに何も期待できなくなる。

圏論の話をしたいなら他所でやってくれ。単芝生やす前に>>423>>425の意図が読めるか拙い頭で自省しとけ。
0427デフォルトの名無しさん2015/06/03(水) 18:36:14.98ID:nbbdPdbj
草が自生するわهههههههههههههههههههههه
0428デフォルトの名無しさん2015/06/03(水) 20:40:35.99ID:o4gP2WaR
継続
foo x = ($ x)
bar m f = \ g -> m (flip f g)

おまじない
encode = ($ return)
decode = (>>=)

モナド則
decode (return x) = foo x
encode (decode m) = m
decode (m >>= f) = (decode m) `bar` (\ x -> decode (f x))
0429デフォルトの名無しさん2015/06/04(木) 11:03:34.20ID:TEKHUXbi
>>425
関手圏における対象(元の圏での自己関手)Fたちの「べき乗」 FF, FFF, FFFF, ... たちを
Fにまとめるための積に相当するものとしてμが、そしてそのような「積」が結合法則を
満たすことの要請として

μ(Fμ)=μ(μF)

が,そしてFの「ゼロ乗」に相当するものとしてηが与えられる。ηが「積の単位元」
に該当するための要請が、μ(Fη)=id F =μ(ηF) となる。

半群の代数法則を集合と写像の図式で書き表してみると上のような法則がどのように
して導かれるかわかる。

このような意味でモナドは「一般化された半群」だと言える。

一度モナドFが与えられたとき、Fを利用して X -> F Y 型の射を「合成」する手段が得られることが
わかる。KleisliにちなんでKleisli射などと呼ばれる。

詳しいことはマクレーン「圏論の基礎」を読んで欲しい。例がいちいち高尚なので読みづらいが
どのみちあの全ての例を理解できるひとなどいないと思っておけばいい。
0430デフォルトの名無しさん2015/06/04(木) 12:14:47.63ID:6HPpoO/k
>>429
サンクス
要するに、まず、μはモナド領域における積演算であり、それは結合法則を満たす、でいいよね。
そしてηはその積演算についての単位元、と言いたいが、ηはモナド領域の元ではないので
そうは言えないよね?
0431デフォルトの名無しさん2015/06/04(木) 17:28:26.87ID:TEKHUXbi
>>430

「モナド領域」で何を言いたいのかわからない。

#言葉はなるべく正確に使おう

>>429の補足

モナドと半群Gの類似性を捉えるためには「単位元」を「ゼロ項演算」とみなすとよい:

e : * --> G

ここで、* は単元集合ならなんでもよいのだが、何か一つ決めておく。そして任意の集合Sに対して

  * × S と S

が 1-1 かつontoな写像で結ばれているので同じと「みなす」ことにより、* は「デカルト積における単位元」
とみなせる。(集合A,Bの共通部分 A ∩B を「積集合」と呼ぶ場合があるが、全然違う「積」であることに注意)。

半群Gの「積をとる演算」m はもちろん

m : G×G --> G

となる。

(つづく)
0432デフォルトの名無しさん2015/06/04(木) 17:30:36.75ID:TEKHUXbi
>>431
(つづき)
こうやって考えてみると半群Gの結合法則は、G×(G×G)と(G×G)×Gを(当然の如く)同一視したうえで

  m ○ (idG×m) = m ○ (m×idG)

のように表せる。ただし、○は写像の合成を表すものとする。また、

idG×m : G×(G×G) --------------> G×G
<x, <y,z>> |---> <x, m(y,z)>

など。そして単位元については
   
   m ○ (idG×e) = idG = m ○ (e×idG)

となる。ここで、

 idG×e:G ---------> G×G
g |-------> <g,1>

など。半群というものをこのような視点で捉えて初めてモナドとの関係が見えてくるわけです。
抽象的に見て初めて見えてくるのであってそれを乱暴に「モナドは半群である」と言い切ると、
色々誤解を招くわけです。
0433デフォルトの名無しさん2015/06/04(木) 17:33:45.51ID:TEKHUXbi
(全角スペースの連続って無視されるのか。失敗した)
0434デフォルトの名無しさん2015/06/04(木) 17:52:43.81ID:6HPpoO/k
μとηを普通に(自然に)定義すればモナド則は自ずと満たすようになるのではないの?
むしろモナド則を満たさないように定義する方が難しいのでは?
0435デフォルトの名無しさん2015/06/04(木) 18:10:46.82ID:OGWHpt3Y
Haskell入門の中間テストって
リストはモナドであることを証明せよとか
このデータ型はモナドか? 理由と共に答えよ
とか
必要な関数を足して、このデータ型をモナドにせよ
とか出るんでしょ!ひえぇ
0436デフォルトの名無しさん2015/06/04(木) 21:25:30.08ID:yrg33OPn
>Fの「ゼロ乗」に相当するものとしてηが与えられる。

ηと恒等関手の違いがさっぱりわからない
こんなの絶対おかしいよ
0437デフォルトの名無しさん2015/06/04(木) 22:57:11.06ID:yrg33OPn
ηは単位元
恒等関手も単位元
F^n ⇔ F ってことは F も単位元かな
1^n = 1 と同じように
0438デフォルトの名無しさん2015/06/04(木) 23:01:33.99ID:TEKHUXbi
>>436
ηはControl.Monad では return と呼ばれてる。FをモナドとしたときHaskell風に言えば

η :: a -> F a

だよ。ηは「Hask圏における自己関手を結ぶ自然変換」であることを理解しよう。

Haskellとモナドだけに関連しても、

1.Hask圏 (これが議論の基礎となる)
2.Hask圏の自己関手の圏  EndoFunct(Hask)
3.Hask圏のモナド(Hask上の自己関手の一種)Fが作り出す Kleisli圏

という最低でも3つの「圏論的視点」がある。視点を変えると名前が変わったりするので要注意。

たとえば、Hask圏での「自己関手」は EndoFunct(Hask) という圏では「対象」となる。
また、「Hask圏における自己関手を結ぶ自然変換」は EndoFunct(Hask) では「射」となる。

マクレーンの本は「あれも書かなきゃこれも書かなきゃ」って感じでどんどん話が進むし
証明は読者に任せたwwwってノリの箇所も結構あるので一度きちんと自分で整理してみることを
勧める。
0439デフォルトの名無しさん2015/06/05(金) 16:27:16.31ID:oA4lY9uS
Amazonの岡部健氏のレビュー、ようやくまともな力学がはたらくようになったな。
おまえら【自称】関数型コミュニティーのしょーもない組織票も、所詮はごくごく一部の小さな力に過ぎない
「正しさ」ってどんなにおまえらがわめいてもねじ曲げられないのさ
0440デフォルトの名無しさん2015/06/05(金) 16:27:52.01ID:oA4lY9uS
田中もボレロもしょーもないことやってるようだが、騒ぐなら「コード書け」。
0441デフォルトの名無しさん2015/06/05(金) 16:56:46.59ID:NH+N2vxp
>>439
正しい力学w

☆☆☆☆☆ 4 人中、0人の方が、「このレビューが参考になった」と投票しています。
☆☆☆☆☆ 55 人中、7人の方が、「このレビューが参考になった」と投票しています。
☆☆☆ 30 人中、2人の方が、「このレビューが参考になった」と投票しています。
☆☆☆☆☆ 85 人中、9人の方が、「このレビューが参考になった」と投票しています。
☆ 106 人中、97人の方が、「このレビューが参考になった」と投票しています。
0442デフォルトの名無しさん2015/06/05(金) 19:45:34.72ID:wKAWiqlA
http://www.kenokabe.com/blog/

問い合わせ:05/03/15 04:44:35

1) レビューに対する投票について御社社内で不正な操作があったのか?
2) 不正なユーザによる複数投票があったのか?
3) 外部からの不正アクセスによる投票操作があったのか?
4) なぜ★5のレビューが2件も削除されているのか?
という4点について御社の公式な見解を教えていただけませんでしょうか。

回答:2015年5月3日 8:19

お客様からお問い合わせいただいた「1)」、「2)」、「3)」の件につき
まして、当サイトでは、カスタマーレビューについて、より正確な投票数をカ
ウントするため、投票の傾向をシステムによって監視しています。特定のお客
様が投稿したレビュー、または特定の商品に関するレビューに対して集中的に
投票が行われているなど、不適切な投票とみなされた場合は、自動的に投票が
削除されます。また同一カスタマーや同一カスタマーの複数アカウントからの
投票など不正と認められた場合、自動的に投票数が削除されます。

なお「4)」の件につきまして、当サイトのレビューが非掲載となる場合、投
稿者ご自身でレビューを削除された場合と当サイトのレビューガイドラインに
抵触していると判断したため削除された場合がございます。上記のどちらかで
非掲載となりますが、詳細については、投稿者の個人情報およびプライバシー
を保護の観点から、ご案内できませんことをご了承ください。

参考:https://twitter.com/xr0038/status/592286801282240512

kenokabe 本に好意的なレビューをしている coolio 氏のレビューページ
http://www.amazon.co.jp/gp/cdp/member-reviews/A2KNM1BDUB22Q の google
キャッシュを見たらユーザ名が kenokabe で吹き出しそうになった
http://f.hatena.ne.jp/xr0038/20150426201833
0443岡部健2015/06/06(土) 07:00:48.03ID:/qvfFI9e
そんなレビューなんて知らないね
えー加減にせーよ
0444デフォルトの名無しさん2015/06/06(土) 07:04:20.42ID:EMdVS6mw
はいはいなかったことなかったこと

アホか
0445デフォルトの名無しさん2015/06/06(土) 14:03:45.58ID:/qvfFI9e
岡部氏の本を精神病のコーナーに並べて置いたのはおまえだろ?
0446デフォルトの名無しさん2015/06/06(土) 14:04:41.32ID:/qvfFI9e
田中、おまえも共謀とみなす
0447デフォルトの名無しさん2015/06/06(土) 15:09:56.77ID:EMdVS6mw
はいはい、勝手に田中認定すれよ

どアホが
0448デフォルトの名無しさん2015/06/06(土) 16:17:49.33ID:G0vvOPfV
岡部さん、田中と村上に牙を剥くならご一緒に江添もいかがですか?
0449デフォルトの名無しさん2015/06/06(土) 17:04:05.29ID:QYGhKlvX
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html?m=1

おまえらが国際的にみて異端だとするこの記事について論理的に反論してみて?ほれ?

村上、いつも遠くから吠えるだけだな?たまには立論してみろやクソアマ
0450デフォルトの名無しさん2015/06/06(土) 17:04:35.64ID:QYGhKlvX
マイクロソフトを否定できるか?
これは権威主義のおまえらの試金石だ
0451デフォルトの名無しさん2015/06/06(土) 17:27:34.64ID:ZV6D40F6
否定ならいくらでもできるが、依存を断ち切る行動には結びつかない

前提である【自称】関数型コミュニティが横暴に振る舞っているのかどうかさえ判断はできないのだから反論する必要すらない
マイクロソフトの定義は正しいだろう
しかしそのことが【自称】関数型コミュニティが横暴に振る舞っていることの証拠にはならないのだから
つまり
そもそもこの記事に論点が存在するのかどうかすら怪しい
誰かソースを出してはくれないだろうか
0452デフォルトの名無しさん2015/06/06(土) 17:34:13.60ID:EMdVS6mw
毛は根っからの嘘つき
終わり
0453デフォルトの名無しさん2015/06/06(土) 18:20:24.88ID:sdR7Jr6e
岡部氏の国際的評価
http://kanae.2ch.net/test/read.cgi/prog/1431818519/635-636
「全く意味不明」
「完全に不可解」
0454デフォルトの名無しさん2015/06/06(土) 18:59:18.59ID:GcGbQkec
単なる毛の嘘。Microsoftの記事は「命令型」と「関数型」を対比してるだけ。
タイトルからして「関数型プログラミングと命令型プログラミング」。

https://msdn.microsoft.com/ja-jp/library/bb669144.aspx
「一方、C#、Visual Basic、C++、Java などのオブジェクト指向プログラミング (OOP) 言語を含む
ほとんどの主流言語は、主に命令型 (手続き型) プログラミングをサポートするために作成されています。」

「C#、Visual Basic、C++、Java などのオブジェクト指向プログラミング (OOP) 言語を含む」
「ほとんどの主流言語は、主に」「命令型 (手続き型) プログラミングをサポートするために作成」

誰もオブジェクト指向と関数型を対比してない(毛を除く)。毛の読解力が小学生レベルで欠如してるだけ。

そもそもSchemeやHaskellでオブジェクト指向プログラミングしたり、
C++やJavaScriptで関数型プログラミングできるんだから、対立してるわけがない。
0455デフォルトの名無しさん2015/06/06(土) 19:36:56.78ID:IblTw25F
むかしむかしOOPを普及させようとした人達は
「C言語でもOOPできる」みたいな話に全力で反論してたんだぜ

古本屋で買った「オブジェクト指向入門」に
「混血によるアプローチは混血なりの品質しかもたらさない」って書いてある
いま確認したから間違いない
0456デフォルトの名無しさん2015/06/06(土) 19:51:13.31ID:GcGbQkec
確かに「C++やJavaScriptで関数型プログラミング」とかも、
Haskellみたいな専用の関数型言語に比べて不自然な面があるのは
否定はしない。逆に然り。両方ともサポートした言語もあるにはあるが。
0457デフォルトの名無しさん2015/06/06(土) 19:53:20.38ID:GcGbQkec
>>456
× 逆に然り
○ 逆も然り
0458デフォルトの名無しさん2015/06/06(土) 20:03:34.07ID:0M3+/TFN
Ocamlがあるじゃねえか
0459デフォルトの名無しさん2015/06/06(土) 20:19:35.99ID:uv2S2fjH
田中の返答は反論になってない。マイクロソフトの主張は明らかだ。
特権意識・差別意識まみれの根腐れたおまえらが「見たくないものはみえないふり」して小さな島国のごく一部の界隈で、
国際的潮流に乗ってる有識者を【村八分】にしたい、してるだけ。
チョン同然、あるいはチョンそのもので構成されていても別段驚かないし、その傾向がある
0460デフォルトの名無しさん2015/06/06(土) 20:25:57.60ID:KMNvqcU5
>>456
不自然というか、C++とかでも頑張れば関数型プログラミングも可能。
ただしそれは「関数型プログラミング言語をC++で実装」するようなもん。
実際、初期の関数型言語はCで実装されていたりしたしね。
だから今時は最初からHaskellなり使えばいいというレベルの話。
0461デフォルトの名無しさん2015/06/06(土) 20:43:39.24ID:sdR7Jr6e
毛が批判してる「国内」コミュニティの奴らは
フランス情報学研究所で博士号取得して欧米外資銀で関数型プログラマやってたり
米計算機科学会や国連情報処理学会の関数型プログラミング委員とか委員長だからなw
0462デフォルトの名無しさん2015/06/06(土) 20:46:43.22ID:24cQnkdA
岡部関連は他でやってくれ

【茶道モテ】毛の壁ファンクラブ57【孤立無援】 [転載禁止]&amp;#169;2ch.net
http://yomogi.2ch.net/test/read.cgi/net/1432605927/
土曜・日曜は岡部健のブログを読み解こう!★2 [転載禁止]&amp;#169;2ch.net
http://kanae.2ch.net/test/read.cgi/prog/1432729445/
0463デフォルトの名無しさん2015/06/06(土) 20:48:26.12ID:0M3+/TFN
いつまで阿呆の相手してるんだ?
もっと有意義な話をしてくれ
0464デフォルトの名無しさん2015/06/06(土) 20:57:41.59ID:GcGbQkec
正直スマンカッタ

どこぞで話題になってたones=1:onesのonesが(1:)の最小不動点(実際には唯一の不動点)という件、
Haskellでも再帰的定義は常に最小不動点という解釈で合ってる? もちろん:とか関数はlazyだとして。
0465デフォルトの名無しさん2015/06/06(土) 22:10:30.32ID:h/G/zDwf
>>460
もっとふざけたことしてるやつもいるからな。VBAで関数型プログラミングとか。
0466デフォルトの名無しさん2015/06/07(日) 05:28:41.31ID:MhTDgKGm
竹塩壁なの?本名
0467デフォルトの名無しさん2015/06/07(日) 12:56:36.19ID:jVcLNsk7
そういや、昔O'Haskellなんてものがあったな
結局あれ流行らなかったね
0468デフォルトの名無しさん2015/06/07(日) 13:37:10.71ID:lpscvJOy
>>467
割と早期にTimberに移行したから。

http://timber-lang.org/index.html

そもそもサブタイピング便利か? というのもあり。
OlegのHListとか見るとねえ……
0469デフォルトの名無しさん2015/06/08(月) 08:10:38.52ID:rqAfod0u
おまえらは岡部健のポテンシャルに嫉妬してるだけ
0470デフォルトの名無しさん2015/06/08(月) 13:32:32.63ID:ZD5oJ+MT
559 仕様書無しさん 2015/06/08(月) 12:23:22.32
岡部健、チマチマとメールでこっそり罵倒ww

http://b.hatena.ne.jp/entry.touch/253482981/comment/shokai
0471デフォルトの名無しさん2015/06/08(月) 14:13:06.97ID:pkFJsD/2
http://t.co/ts9QDRIiUp

kenokabe こと 岡部健 #毛の壁 のブログにてコメントを出すと、もれなくメールにて毛の壁による罵倒、ならびにヘア告訴されるかもしれない権利が付与されるそうに御座いまする。 桑原桑原。
0472デフォルトの名無しさん2015/06/08(月) 19:10:07.57ID:dWqRejTW
毛の壁先生、お願いですから掲示板荒らすのやめて下さい
2chだけじゃないですよ?
0473デフォルトの名無しさん2015/06/08(月) 20:21:54.95ID:cjhIgMXy
OCamlerはいい加減、荒らすのをやめて欲しい。
MLスレは閑古鳥が鳴いているのに、マ板の岡部スレでは月曜の朝からOCamlerで大賑わい。
少しは自分たちの異常さを認識したほうがいい。
0474デフォルトの名無しさん2015/06/08(月) 21:03:59.90ID:wHGZFrsF
843 :名無しさん@ゴーゴーゴーゴー!:2015/06/08(月) 19:50:18.31 ID:1muq0MvU0
mapからreduceを作るとか、普段どれだけゆるい感じで物事考えているかよく分かるね
こんなの質問する前に1秒でも思考実験していれば分かることだ

844 :名無しさん@ゴーゴーゴーゴー!:2015/06/08(月) 20:13:41.12 ID:1muq0MvU0
reduce :: (a -> b -> a) -> a -> [b] -> a
reduce f z xs = let y = z : map (\(i, x) -> f (y !! i) x) (zip [0..] xs) in last y

試しに挑戦してみたら案外いけましたすみません><

847 :名無しさん@ゴーゴーゴーゴー!:2015/06/08(月) 21:02:29.22 ID:asgdcTzL0
ちょwwHaskellスレが毛の話題で荒れてるからswapしろよwww 👀
Rock54: Caution(BBR-MD5:405b7f1af0f5a85b432d79fa769e9aeb)
0475デフォルトの名無しさん2015/06/08(月) 21:31:31.35ID:zzT0ePpx
なるほどこれ頭いいな。scanlを

scanl z f xs = ys
 where ys = z:(zipWith f xs ys)

と書いてから、zipWith xs ys をmapで書き直せば
確かにこうなるな。最後の要素を取ればfoldlになるわけだ。
0476デフォルトの名無しさん2015/06/09(火) 05:59:45.81ID:keQMp1Zr
858 :名無しさん@ゴーゴーゴーゴー!:2015/06/09(火) 05:58:57.73 ID:FmWR9u6b0
>>852-853
インデックス使わないバージョン(zipは使う)

reduce :: (a -> b -> a) -> a -> [b] -> a
reduce f z xs = f lasty lastx
 where
  (lastx, lasty) = last xys
  xys = zip xs ys
  ys = z : map (\(x, y) -> f y x) xys

っていうかHaskellスレ行けw
0477デフォルトの名無しさん2015/06/09(火) 14:28:52.87ID:keQMp1Zr
まずscanlに相当するものをmyScanl f r xs = ys where ys = r: zipWith f ys xsとして作ります。
zipWith f ys xsをmapを使って書き換えればmap (\(x,y) -> f y x) (zip xs ys)となりますから、
myScanl f r xs = ys where ys = r: map (\(x,y) -> f y x) (zip xs ys)となります。
scanlで得られたリストの最後の要素がfoldlつまりreduceの結果になりますから、
reduce f r xs = last ys where ys = r: map (\(x,y) -> f y x) (zip xs ys)で望みのものが得られます(reduce (+) 0 [1..9] → 45)。
もちろん再帰をこのようにまわりくどく用いた定義をせずに簡明な普通の再帰で書くべきです
0478デフォルトの名無しさん2015/06/09(火) 15:29:01.79ID:Wpjwmkjs
毛の壁ネタは専用スレで。
そこからの転載も不要。
0479デフォルトの名無しさん2015/06/09(火) 16:22:18.33ID:AVtZDhrR
OCaml病人の隔離スレが必要かもしれんな。
0480デフォルトの名無しさん2015/06/09(火) 16:28:45.86ID:GtnmaKAw
関数型隔離病棟はよ
0481デフォルトの名無しさん2015/06/09(火) 17:31:06.57ID:keQMp1Zr
マ板の岡部スレでOCamlerにコテンパンに論破された松沢がこっちに来たな。
Haskellプログラミング以外の話はよそでやれ
0482デフォルトの名無しさん2015/06/09(火) 18:12:13.77ID:s+m3IBNO
reduce f r xs = last ys where ys = r : map (\(x,y) -> f y x) (zip xs ys)
は面白いと思う
0483デフォルトの名無しさん2015/06/09(火) 18:36:24.03ID:Wpjwmkjs
 
しばしば目にするパターンではあるんだよな。
余再帰を巧く使いこなせるようになりたいとは思う。
0484デフォルトの名無しさん2015/06/09(火) 19:37:05.34ID:YMX6lY//
初心者スレが見当たらないのでここに書き込ませてください。
「$演算子による関数適用の区切り」と「.演算子による関数合成」
この違いというか使い分けって

$演算子は括弧対応を沢山省略できて便利
例: sin $ cos $ tan $ x + 1

.演算子は関数合成で変数に束縛可能になるから便利
例: fun = sin . cos . tan . (+ 1)

くらいかなと思ったのですが、後者は
fun x = sin $ cos $ tan $ x + 1
別にこれでも構わないわけですよね。
.演算子の利点って他に何があるんでしょうか?
0485デフォルトの名無しさん2015/06/09(火) 19:46:28.21ID:Wpjwmkjs
>>484
ポイントフリー教信者が使うため。

ってのはともかく、mapみたいな高階関数に関数を
渡さなきゃいけないところで、

map (¥x -> f $ g x) xs
map (f . g) xs

を見比べれば意味がわかるのでは。
なにかに関数を連鎖して適用した結果ではなくあくまで
連鎖した関数そのものが欲しい時には ( . ) が便利。
0486デフォルトの名無しさん2015/06/09(火) 20:00:13.95ID:YMX6lY//
「関数そのものが欲しい時」って
fun x = sin $ cos $ tan $ x + 1
一応これでも目当ての関数 fun が得られてると思うのですが、要は「引数って邪魔だよね」的な感覚?
美的感覚だけでなく実行効率も違ってくるのでしょうか。
0487デフォルトの名無しさん2015/06/09(火) 20:10:23.23ID:Wpjwmkjs
実行効率は一緒。

(f . g) を普通に「gしてfする」とか読むのになれると引数の方がじゃまになる。
「¥x -> f $ g $ x +1 」 より 「 f . g . (+1)」の方が、
「1足してgしてfする」と読みやすいし明瞭でしょ。

そのうちmapの引数にいちいちラムダ式書いてられるかって気になるよ。
よく使うものの構文は軽くなくてはいけない、というだけ(美的感覚とは少し違う)。
0488デフォルトの名無しさん2015/06/09(火) 20:13:23.65ID:YMX6lY//
ポイントフリーでググってみましたが...
例えば
fact :: Integer -> Integer
fact n = product [1..n]
よりも
fact = foldl (*) 1 . enumFromTo 1
のほうがスマートで好まれるのでしょうか。
実行効率同じなのになんだか可読性を犠牲にしすぎのように思えるのですが。
0489デフォルトの名無しさん2015/06/09(火) 20:21:06.13ID:Wpjwmkjs
>>488
ポイントフリー教に入信する理由は全然ない(本当にやめてほしい)。
簡単に「〜して…して〜する」みたいに読める時だけ使えば十分。

いちいち名前をつける必要のない(むしろ使い捨てなので名前をつけるべきでない)ような
関数のチェインをラムダ式よりも軽い構文で書ける、というのがまずは利点。

もう少し慣れてくると今度は Control.Lensパッケージが 関数合成演算子( . )を
あたかもオブジェクト指向言語のメソッド呼び出しであるかのように見せる
芸当を見せてくれるけど、それはまだ先の話。
0490デフォルトの名無しさん2015/06/09(火) 20:39:29.39ID:YMX6lY//
ありがとうございます。ちょっとだけ感覚が分かってきました。
0491デフォルトの名無しさん2015/06/09(火) 22:00:18.96ID:On8D0YSk
ポイントフリーの理由は、読む能力を上げることだろうね
人間が書いたものは読めないならクレームをつけて書き直させることができるが
自然現象のようなものを読む場合は読む人の能力に全てがかかっている
0492デフォルトの名無しさん2015/06/09(火) 22:31:32.15ID:lp6qdJfP
あまりに自然現象のようなレスなのでびっくりしている
0493デフォルトの名無しさん2015/06/09(火) 23:05:53.18ID:On8D0YSk
驚き最小の法則ってあったけど
なんで驚いた側ではなく驚かせた側を改善しようとするのかね
両方改善した方がいいのに
0494デフォルトの名無しさん2015/06/09(火) 23:31:39.42ID:nX857Zqc
とても自然現象です。すごく。
0495デフォルトの名無しさん2015/06/09(火) 23:31:47.34ID:s+m3IBNO
>>493 驚かせる側=言語設計者より
驚く側=プログラマのほうが圧倒的に人数が多いから、
前者が改善したほうが合理的。

…とかくだらないこと聞くなよ。
mapでreduce実装のほうがまだためになる

>>492はワロタ
0496デフォルトの名無しさん2015/06/09(火) 23:49:25.76ID:On8D0YSk
圧倒的多数が改善するより、少数が改善する方が合理的?
それは自明ではないよね
0497デフォルトの名無しさん2015/06/10(水) 00:12:15.37ID:4dIY3WJF
よそでやれ
0498デフォルトの名無しさん2015/06/10(水) 02:25:01.58ID:7goP4N8P
こうどなあおりあい
0499デフォルトの名無しさん2015/06/10(水) 07:04:49.86ID:xkthzaZS
>>496
合理的かどうかは知らんが、
出来る奴程仕事が舞い込む理屈だよ。
0500デフォルトの名無しさん2015/06/10(水) 10:52:14.97ID:t1zCKUmg
HaskellやOCamlの設計は大部分が重複していて真の設計者が誰なのかわからんから
設計者を探し出して可読性とかを要求するという古典的なやり方が効く保証がない
0501デフォルトの名無しさん2015/06/10(水) 11:04:20.00ID:McYDyKet
ワードサラダ汚染マジうざい>On8D0YSk,t1zCKUmg
0502デフォルトの名無しさん2015/06/10(水) 11:56:36.76ID:t1zCKUmg
どのワードをうざいと思ったか教えてくれ
可読性かな?
0503デフォルトの名無しさん2015/06/10(水) 12:46:16.17ID:vkTp1NO/
端的に意味不明だろ。
0504デフォルトの名無しさん2015/06/10(水) 13:15:55.24ID:t1zCKUmg
意味がわかる人もわからない人もいると思う
後者がすごい自信を持っている理由を教えてほしい
常識的には「わからない」より「わかる」方が有能だと思う
今それが逆転しているのはなぜなのか
0505デフォルトの名無しさん2015/06/10(水) 14:01:51.47ID:vxCnSfpA
荒らしなので無視してね
0506デフォルトの名無しさん2015/06/10(水) 14:08:38.12ID:YrTGTRFm
△ 「意味不明」
◯ 文章の論理が根本的に間違っていてコミュニケーションが成立しない

完全に対話不可能だから二度と出てくんな。
0507デフォルトの名無しさん2015/06/10(水) 14:09:43.52ID:YrTGTRFm
>>505 スマンカッタ
0508デフォルトの名無しさん2015/06/10(水) 17:54:46.33ID:9PwGA43Z
時代はK言語だろ
0509デフォルトの名無しさん2015/06/10(水) 19:36:45.21ID:Gkss7rSH
>>508
つまりハングルか。
0510デフォルトの名無しさん2015/06/10(水) 21:12:55.26ID:7i1MtT87
今までモナドという概念がなかったということは
理論計算機科学ってへぼいということでしょうか?
0511デフォルトの名無しさん2015/06/10(水) 21:22:17.53ID:vkTp1NO/
表示意味論が提示されてから10年ほどで計算効果一般の
モデルをモナドで与えようという発想が提出されてるのだが、
「今までモナドという概念がなかった」とはこれいかに。
0512デフォルトの名無しさん2015/06/11(木) 00:21:14.93ID:hzM+9d/O
>>510 基地外は失せろ

>>511 ScottからMoggiまで十数年ぐらい?
確かに意外と短かったんだな…
0513デフォルトの名無しさん2015/06/11(木) 00:38:40.42ID:pB1BlG5Q
Dana S. Scott. Outline of a mathematical theory of computation. Technical Monograph PRG-2, Oxford University Computing Laboratory, Oxford, England, November 1970.

E. Moggi. Computational lambda-calculus and monads. In 4th LICS Conf. IEEE, 1989.

この間ほぼ20年かな? いずれにせよ「今までなかった」はないw
0514デフォルトの名無しさん2015/06/11(木) 00:53:54.36ID:QUqBUSLw
>>512,513

1980年代初めには応用可能性が知られてて、
1985年にMoggi含む複数人の「圏論とプログラミング」という
ワークショップが開かれてるんで、10年ほど、と計算した。
0515デフォルトの名無しさん2015/06/11(木) 01:06:20.81ID:pB1BlG5Q
しらんかった。後者はこれか。
http://dx.doi.org/10.1007/3-540-17162-2_126
ぱっと見、まだmonadとは書かれていないが。

http://www.disi.unige.it/person/MoggiE/ftp/lc88.pdf
には
My thanks to M. Hyland, A. Kock (and other participants to the 1988 Category
Theory Meeting in Sussex) for directing me towards the literature on monads relevant
to the subject.
とあるな。
0516デフォルトの名無しさん2015/06/11(木) 03:59:27.71ID:bOOr6QDN
モナドを使うという発想は、C++でテンプレート機構使えばコンパイル時処理できるぞっていう発見と似たようなものではないか
そのために生み出されたのでなく元々そこに(見過ごされたまま)あった
0517デフォルトの名無しさん2015/06/11(木) 09:14:47.16ID:XjBiZb+W
おいおいみんなどうしたんだよw
モナドもしょぼい概念だったとそろそろ分かれよw
0518デフォルトの名無しさん2015/06/11(木) 09:31:44.59ID:IhjRP6Ev
では次のを頼む
0519デフォルトの名無しさん2015/06/11(木) 09:44:54.00ID:XjBiZb+W
>>518
しょぼいっていうのは分かってんだな?
ScottやMoggiにあこがれてるんじゃまだかなと思うんだが
0520デフォルトの名無しさん2015/06/11(木) 10:16:52.40ID:kAIL8Wh0
なんか地獄のミサワっぽい
0521デフォルトの名無しさん2015/06/11(木) 10:57:09.42ID:npoi0wO0
基地外うざいししつこい>bOOr6QDN,XjBiZb+W
0522デフォルトの名無しさん2015/06/11(木) 11:01:20.03ID:PuDMuD0l
こういうマウンティングのためだけに知識を得る底辺層が消えない限り
プログラマの地位は向上しないだろうな
0523デフォルトの名無しさん2015/06/11(木) 12:10:32.39ID:bAVDGSXl
知識を得なければマウンティングできない現状をどう変える?
少なくとも言えることは、知識ゼロでマウンティングできる最悪の状況は回避してほしい
0524デフォルトの名無しさん2015/06/11(木) 12:55:54.03ID:5wVrf0wy
マウンティングした者はLetter to a Young Haskell Enthusiastを1000回音読する刑に処す
0525デフォルトの名無しさん2015/06/11(木) 13:47:53.72ID:MCnGDuRk
なぜマウンティングするのか? なぜならそこに山があるからだ
0526デフォルトの名無しさん2015/06/11(木) 14:26:29.66ID:bAVDGSXl
言っておくがLisperが関数型の知識をいくら詰め込んでもドヤ顔できない
なぜなら動的型だから
ドヤ顔したいやつは静的型に群がっているのであって、関数型はあまり重要ではない
0527デフォルトの名無しさん2015/06/11(木) 17:04:10.51ID:QUqBUSLw
なんで毛スレのキチガイがOCamlじゃあんくてHaskellのスレに紛れ込んでるんだか。
0528デフォルトの名無しさん2015/06/11(木) 18:26:19.74ID:npoi0wO0
>>527
>>481
0529デフォルトの名無しさん2015/06/11(木) 19:26:15.71ID:bOOr6QDN
つまりOCamlerは強いけどHaskellerは嘗められてる?
0530デフォルトの名無しさん2015/06/11(木) 19:45:13.61ID:yf7swl7Y
>>527
キチガイはお前だよ
0531デフォルトの名無しさん2015/06/11(木) 20:02:46.43ID:npoi0wO0
>>527>>514でちゃんと有用な情報を提供している

>>523>>519>>517>>516>>511は情報価値0以下の荒らし。
05325312015/06/11(木) 20:04:50.35ID:npoi0wO0
>>511じゃない、>>510
0533デフォルトの名無しさん2015/06/11(木) 21:32:50.42ID:pgVrj2dA
悪行は善行で相殺できるという前提があるから
犯人とか功労者とかが誰か調べることに拘ってるのか
すごい納得してしまった
0534デフォルトの名無しさん2015/06/11(木) 22:17:16.64ID:3DdkuOqE
相殺云々以前に、プログラム板なんだから
プログラムの話をまともに出来ない奴は
お呼びじゃない、ってだけだろ。
0535デフォルトの名無しさん2015/06/11(木) 22:48:19.91ID:QpuB/nCQ
コード書けない連中がこういうときだけでかい面して鬱陶しい
0536デフォルトの名無しさん2015/06/11(木) 22:57:20.66ID:npoi0wO0
相殺も何も基地外は善行0、それ以外の人は悪行0。
0537デフォルトの名無しさん2015/06/11(木) 23:43:07.37ID:pgVrj2dA
「プログラムは書く時間より読む時間が長い」なんて言われたら
プログラムを書く話なんてしなくなるでしょ
読んだ人の感想とかそれに対しどう返答するかみたいな事ばかり考えるようになる
0538デフォルトの名無しさん2015/06/12(金) 00:12:07.74ID:lWqlv+DR
全くならない。
0539デフォルトの名無しさん2015/06/12(金) 00:48:31.06ID:de1HjIPa
このスレ、プログラム板でもかなり書き込みが多い方なんだけど、
その割にHaskellで作ったアプリが世の中にないのは、
このスレに書き込んでいる人間の大半は結局喋っているだけで、ちっとも作っていないから?
それとも、ごく少数の口数の多い人間がこのスレに常駐しているということか?
0540デフォルトの名無しさん2015/06/12(金) 01:09:28.05ID:kpQWF1y9
みんな不安なんだよ
0541デフォルトの名無しさん2015/06/12(金) 01:11:49.35ID:ewifs/WC
「アプリ」でどういうものを指しているのかによるだろ。
0542デフォルトの名無しさん2015/06/12(金) 01:14:23.65ID:3H6DdNeR
スレが伸びてるのは単に基地外が粘着してるから。
アプリは https://wiki.haskell.org/Haskell_in_practice とかあるし、
外資もNTTデータも金融とかclosedなので外に出ないのも多いと思うが、
それでもC++とかJavaとかに比べれば実験的な言語だから少ないな……
0543デフォルトの名無しさん2015/06/12(金) 01:29:41.08ID:ewifs/WC
スクリプト言語の代わりに普段使いしてる感じだし、
なによりParsecのお蔭で色々とはかどるのでなあ。

わりと最近3000行程度のGUIのツールを書いたが、
他所で役に立つようなものでもないので、公開するとか
そういうことも特にない。
0544デフォルトの名無しさん2015/06/12(金) 07:19:43.33ID:1CtSfxjI
書くだけならスクリプト言語で十分だが読めない保守できない等の苦情が予想されるので
じゃあ静的型付けなら読めるのか実験したい
0545デフォルトの名無しさん2015/06/12(金) 10:25:49.56ID:ppIf3q9e
NTTデータを入れると、一気にカスっぽく見える。
外資と金融の間に、さりげなくNTTデータを入れるセンスが絶妙。
0546デフォルトの名無しさん2015/06/12(金) 11:52:15.09ID:lWqlv+DR
>>545
https://www.google.co.jp/search?q=ntt%E3%83%87%E3%83%BC%E3%82%BF+haskell
こういう世界でどうなるか、少なくとも実験としてはすごいと思う。
数理システムも買収したし。
05475462015/06/12(金) 11:54:37.53ID:lWqlv+DR
iOSのSafari、リンクがまともにコピペできねーorz
>>546は「NTTデータ Haskell」の検索結果な
0548デフォルトの名無しさん2015/06/12(金) 12:00:11.55ID:nIxAy/au
NTTデータって人身売買の会社じゃなかったの?
0549デフォルトの名無しさん2015/06/12(金) 12:08:38.69ID:lWqlv+DR
前はHaskellでインドに外注とか言ってて
いろんな意味ですげーとか思ったが
最近はどうなん?
0550デフォルトの名無しさん2015/06/12(金) 12:26:32.05ID:bMq/lwLt
( ゜Д゜)マジカヨ
0551デフォルトの名無しさん2015/06/12(金) 12:46:55.72ID:ppIf3q9e
年金のシステム作ってたのもNTTデータだろ?

NTTデータって、空き巣に絶対に破られない鍵を設置して、
鍵を閉め忘れて出かけるような感じだよね。
0552デフォルトの名無しさん2015/06/13(土) 04:35:41.57ID:VBb4KC+k
あれもうシステムの問題じゃないよなあ
フリーメールで届いた添付.exeダブルクリックする連中とかソーシャルエンジニアリング以前の問題
0553デフォルトの名無しさん2015/06/13(土) 10:21:50.46ID:+dSTwJzi
そんなに蒸し返したいなら言わせてもらう
ユーザが多数で開発者が少数なら、ユーザのせいにするのは非合理的という思想があった
その合理主義の結果がこれ

それとも蒸し返す意図がなくても自然に繰り返されるパターンなのか
0554デフォルトの名無しさん2015/06/13(土) 11:17:16.80ID:kXcfUXOo
結果がこれ ってどれ?
0555デフォルトの名無しさん2015/06/13(土) 11:22:32.93ID:fmObtMJM
はすけるスレだからハスケルの話してね
0556デフォルトの名無しさん2015/06/13(土) 12:05:27.26ID:+dSTwJzi
関数型言語の仕様は意図的かそれとも自然にできたか
衒学的な意図がないならないと正確に説明できれば普及しやすいのでは
0557デフォルトの名無しさん2015/06/13(土) 12:20:08.70ID:RjEVnwaL
>>556
普及するのにそんな御大層なものは要らんよ。
必要なのは次の3つのみ。

・馬鹿でも簡単に始められて、扱いやすいGUIアプリ用フレームワーク
・そのフレームワークと連動するRAD統合開発環境
・数多くのGUIアプリのサンプル

これに加えてスマホアプリも簡単に作れれば尚良い。

逆に、Haskell というアプリ開発環境はこれらが無いから流行らない。
0558デフォルトの名無しさん2015/06/13(土) 13:26:03.85ID:+dSTwJzi
>>557
VBやObj-Cが普及した理由はそれだが長続きしない
それらを終わコンにする圧力があった
MSやAppleでも逆らえない
0559デフォルトの名無しさん2015/06/13(土) 14:42:11.49ID:gPoekrm5
バカに流行る必要なんざ微塵もないだろ。
環境が悪化するだけだわ。
0560デフォルトの名無しさん2015/06/13(土) 14:43:22.99ID:CpRxCXBF
>>559みたいなバカが寄り付いている時点で確かに終わってるな
0561デフォルトの名無しさん2015/06/13(土) 14:55:15.57ID:fmObtMJM
表面じゃなくて内容の話を希望な
0562デフォルトの名無しさん2015/06/13(土) 16:08:55.81ID:U7fz6F5N
「その数式、プログラムできますか?」という本を立ち読みしたら
圏論とSTLがどーたらみたいな謎文章が目に入って困惑している
"圏論 STL"でググれば当該箇所Google Booksで読めるんですけどこれってまともなんですかね?
Haskell関係ないけど圏論がらみということで一つ
0563デフォルトの名無しさん2015/06/13(土) 16:55:46.04ID:KIURMs4/
>>556
何故、普及に拘るの?
0564デフォルトの名無しさん2015/06/13(土) 17:04:10.62ID:oBvXXQ5V
>>562 見たけど、確かに意味不明だ。訳の問題かと思ったが、原文も似たようなもんだな……。

強いて言えば原文の"categorical theories"が和訳では勝手に「圏論(categorical theory)」になってたり、
"not computationally isomorphic"のnotが訳し漏れで「計算上は同型」になってたりと訳の問題も大きくて、
原文のほうは好意的に解釈すればまだ理解可能だけど。
05655642015/06/13(土) 17:09:54.96ID:oBvXXQ5V
(原文も「好意的に解釈すれば理解可能」なだけで、
For a long time, people believed that only categorical theories were useful for programming
云々は聞いたこともないので違う並行宇宙の話としか思えないw)
0566デフォルトの名無しさん2015/06/13(土) 18:44:09.66ID:P5CgqW+9
普及しないと、ゴミみたいな知識に終わるからだ。
普及させたくない層もいるけど、ごく一部だろう。
普及すると、割を食うのはトップ層だからな。
0567デフォルトの名無しさん2015/06/13(土) 20:11:39.38ID:sBN7IsLr
category theory(圏論)とcategorical theoryは別物なのかw
誤訳するのもわからなくもない
(notの訳し漏れは論外)

https://en.wikipedia.org/wiki/Categorical_theory
> "Categorical theory" redirects here. Not to be confused with Category Theory.
0568デフォルトの名無しさん2015/06/13(土) 20:13:41.36ID:xQVzvj+B
>>566 俺は総合的には普及してほしくないとは思わんが、
普及するとゴミが増えるのも事実
0569デフォルトの名無しさん2015/06/13(土) 20:21:22.10ID:ZkFtP6do
>>558
そうは言っても、そうとう長続きしてきたような気がするが。

>>557 は普及する要因ではあってもオワコン化する原因ではないんじゃないか?
それとも、>>557 のせいでオワコン化が早まったということ?

何れにしても、Haskell はその歴史は長いくせに、
アプリ開発という点では未だに始まってすらいないよな。
方法論の研究は行われてるのかな?
0570デフォルトの名無しさん2015/06/13(土) 20:43:48.20ID:jKGoCo7L
なにか適当な GUI のからくりはないものか
0571デフォルトの名無しさん2015/06/13(土) 21:00:56.80ID:EFCkVZsH
GUI開発環境はともかく、「方法論」は手続き型やオブジェクト志向でも
それこそゴミしかないと思うんだが。
0572デフォルトの名無しさん2015/06/13(土) 21:18:01.62ID:ZkFtP6do
>>571
まだまだゴミだと評価しようが、
その方法論で実際に数多くの多種多様なアプリが作られてる。
これからも現場で起きた問題に対して改善案が提案されていくと思う。

... --> 問題 --> 提案 --> 問題 --> ... というサイクルができてる。

で、Haskell(関数型)はどうなのよ、という話。
一歩引いた立ち位置の研究者から提案された方法論が現場で使われ始めた段階なのか、
それとも、そういう方法論すらまだ無い状態なのか。
0573デフォルトの名無しさん2015/06/13(土) 21:19:33.57ID:jKGoCo7L
モナディウスはどうしているのだろう?
0574デフォルトの名無しさん2015/06/13(土) 21:22:43.08ID:SsnyuIbc
単体テストは関数的なほうが副作用ないから簡単だよな。
ミクロなデザインパターンとかも、そもそも不要か自明になるってよく言われてるとは思う。

マクロな開発プロセスは普通と変わらないんじゃない?
0575デフォルトの名無しさん2015/06/13(土) 21:32:42.37ID:ZkFtP6do
>>573
あれは、取りあえず作ってみただけで、その後が続かなかったよね。
あれを叩き台にして色々議論されることもなく、
Haskell でこんなこともできるんだと言われて、それで終わり。
0576デフォルトの名無しさん2015/06/14(日) 00:34:08.79ID:RWIDraJH
モナディウスって名前だけで方法論がわかる
他のアプリを真似すればいいんだろ
0577デフォルトの名無しさん2015/06/14(日) 08:27:51.02ID:OtrhG80a
スーパートップ層 普及を望んでいる
トップ層 普及を望んでいない
中堅層 普及を望んでいる
下位層 普及を望んでいないか、どっちでも良い
0578デフォルトの名無しさん2015/06/14(日) 09:07:11.87ID:kkYM1O8c
>>577
proof it!
0579デフォルトの名無しさん2015/06/14(日) 10:09:03.75ID:Pjcz0hD2
>>573
コード読めないの?馬鹿なの?
0580デフォルトの名無しさん2015/06/14(日) 10:32:05.79ID:SL/F9php
プログラムなんてのはツールなんで
用途に応じた使い方ができればそれでいい。
一番売れるのは安くてシンプルな電卓だろうが
使う用途や人間を選ぶ高機能な関数電卓や、
ソロバンや計算尺にもそれぞれ需要がある。
計算尺振り回して「使い方が分からん。
こんなモンはゴミだ」と喚いても
メーカーもユーザも苦笑か失笑しか出来ん。
0581デフォルトの名無しさん2015/06/14(日) 15:29:34.67ID:L5Y5b9kK
sm26445256
0582デフォルトの名無しさん2015/06/15(月) 02:53:59.25ID:LOIdsEui
基地外に愛されてしまうのもHaskellの業の深いところだ
0583デフォルトの名無しさん2015/06/15(月) 07:50:18.85ID:Hdxb2Sdn
基地外を呼び寄せる言語‥どういうところがそうなんだろう?
prolog とかにはなぜ寄らないのか?
0584デフォルトの名無しさん2015/06/15(月) 08:34:53.82ID:9GGhHIhr
一言で言えば、Haskell使える俺カッコイイみたいな言語だから
0585デフォルトの名無しさん2015/06/15(月) 09:14:23.05ID:IHPL8idc
俺カッコイイとかいう常套句に、異常さを伝える力はない
まあオオカミ少年みたいに常に言い続ければそのうち当たるわな
0586デフォルトの名無しさん2015/06/15(月) 22:02:16.43ID:vBLMZKIz
Haskell使える俺TUEEEEEEE
0587デフォルトの名無しさん2015/06/15(月) 22:04:05.10ID:Hdxb2Sdn
lisp/scheme じゃないのはどうして?
0588デフォルトの名無しさん2015/06/15(月) 23:00:49.05ID:q35vzvCm
田中死ね
ボレロレイプされろ
0589デフォルトの名無しさん2015/06/16(火) 00:19:10.77ID:WwZ8EXS4
>>580
いまどき計算尺はごみでしょ。
0590デフォルトの名無しさん2015/06/16(火) 01:06:35.60ID:nO6QHrwV
>>589
需要があるから生産も販売もされてる訳で。
0591デフォルトの名無しさん2015/06/16(火) 08:02:12.01ID:4c+taF0x
言いたいことはあってると思うしわかりやすいが
さすがにHaskellは計算尺じゃないだろw
0592デフォルトの名無しさん2015/06/16(火) 21:51:02.26ID:CcjDjnqw
まあ計算尺もわからないような奴がHaskell学んでもたいした事できないだろう
ところで計算尺ってなんだ
0593デフォルトの名無しさん2015/06/16(火) 22:34:00.92ID:0ci32UBo
計算尺、今ではほとんど使わないんだろうけど、あの仕組みを考えた人は天才だと思う
0594デフォルトの名無しさん2015/06/16(火) 23:17:45.09ID:MDYhP0lu
ghciのコマンドのヘルプみてたんだが、なんでこれコンポーザブルになってないんだ?

:browse や :info で得た情報を他のコマンドに渡して処理できれば便利やん。

っていうか、:list hoge でhogeのソースを見れるのに:edit hogeは無理なのか...
いちいちファイル名を探してこなきゃならんのは面倒だよ。
0595デフォルトの名無しさん2015/06/17(水) 00:38:11.14ID:iYY4vjEN
シェルが便利すぎてCを書く必要があまりない某OSで型が厳格でない言語が流行したから
型のためには便利なコマンドを規制するべきと判断したのではないだろうか
0596デフォルトの名無しさん2015/06/17(水) 06:02:52.89ID:UUD++cQ/
reduce を map で実装して何か意味あるの?
0597デフォルトの名無しさん2015/06/17(水) 08:06:07.46ID:iYY4vjEN
敵が来てから武器を作ると間に合わないという理由で、使わない無駄な武器を作ってる
0598デフォルトの名無しさん2015/06/17(水) 08:28:31.12ID:6y+hRJoT
reduceとmapを持ってなきゃいけない型クラスのminimal complete definisionsに使えるかも
0599デフォルトの名無しさん2015/06/17(水) 09:11:03.75ID:0QSt0PBy
普通にreduceでmapを実装すればいいやん
0600デフォルトの名無しさん2015/06/17(水) 11:54:20.02ID:FwmlJS0O
>>598
Control.Functor.Zipの下に来なきゃいけなくなるから超不便だと思う。
0601デフォルトの名無しさん2015/06/18(木) 11:51:58.85ID:zIn+ti7/
「b を a で実装可能」という関係は
反対称律「a <= b かつ b <= a ならば a = b」を満たさない
0602デフォルトの名無しさん2015/06/19(金) 15:33:03.81ID:dN77ILvV
                  ,.-―: ̄`ー::::::::::、
                /::::::::::::.::::::::::::::::::::::::::::`::、、
               /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
               l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
               l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
              l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
              l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
              ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
             ヽ:::::    ̄ .)::;  l  ̄   l::::/
              、:::::..   /:::; .,-、     l:::/、
               ::::::::  ゝヽ- ー' 、     l::/,
                ,:、:: / ,--、,-.、_ l     /
    ,.:':'゙'゙'゙:゙'゙':';.        、::、 `ー ̄-'    /
   r゙ ,.: :;;;:: : : :           、::ヽ      /:
   | : ::::~';::--ー'ー-----ーー;;:'゙ .: :` ‐- 、  |
  ,i    ::::::::::::::::::::::::::::::: ::: :ヾ        i
  r'     ::::::::::::::::: : : :::::: :::::  ::::. .      /
  |      :::::::::: : : : : ::: ::  ::         イ
  i      : : ::::::::::: : : ::::::: :         |
  |      ,.;イ-- .,           ,... -' i
   i      ,.;':/   ゙'ー-.,_ i    ,.イ::  /
  .i::::   /:/        ̄i   / ゙i   |
  │::  ノ::/         |   i   |  |
 r':: イ:::::i゙            |  |   i   |
 |:: | ヽ '-.,         ヽ 〈    ヽ ヽ.,
 i, , '-, ゙'ー'ー'          ヽ、`,ー、  `'ー'ー'
0603デフォルトの名無しさん2015/06/19(金) 20:00:49.31ID:rvqvJJVS
岡部犬ってか
0604デフォルトの名無しさん2015/06/21(日) 14:34:33.88ID:yL+fCFF6
ポイントフリー信者はmapが1変数関数かもしれないと思っている

g = map f
引数 :: a -> b
結果 :: [a] -> [b]

しかし決め付けやレッテル貼りを嫌うのでmapが2変数関数である可能性も否定しない
彼らにとって引数を書くことはレッテルを貼ることに等しい
0605デフォルトの名無しさん2015/06/21(日) 20:14:27.96ID:HwEzsZwl
意味ワカンネ
つうかポイントフリー信者がどうだろうが
Haskellにはそもそも1変数関数しかないのだが
0606デフォルトの名無しさん2015/06/21(日) 20:18:32.21ID:RBHwsW1q
>>605
>Haskellにはそもそも1変数関数しかないのだが
どういう意味?
0607デフォルトの名無しさん2015/06/21(日) 20:33:23.95ID:HwEzsZwl
Haskellではa->b->c は常にa->(b->c)であって
(nullary constructorをとりあえず脇に措けば)
普通の関数のアリティは本質的に1だけだ。
0608デフォルトの名無しさん2015/06/21(日) 21:08:54.24ID:pK1SDj/K
たしかすごHにもそんな説明あったな
0609デフォルトの名無しさん2015/06/21(日) 21:12:32.01ID:7XsQ/1hl
607を補足すると、

f :: X -> Y -> Z

は 「X型変数とY型変数を取ってZ型の値を返す関数」 というより

「X型変数を一つ取って『Y型変数を一つ取ってZ型の値を返す関数』を返す関数」 ということだな。

言葉で書くと却ってわかりづらいな。
0610デフォルトの名無しさん2015/06/21(日) 21:12:49.77ID:HwEzsZwl
正確ではなかったので訂正しておく。
関数型の値としての関数は常に1引数だ。
データ構築子はそもそもこの意味の関数ではない。
0611デフォルトの名無しさん2015/06/21(日) 21:14:20.58ID:HwEzsZwl
あと、関数は常に1引数なのでHaskellにカリー化はそもそも存在しない。
0612デフォルトの名無しさん2015/06/21(日) 21:22:10.14ID:7XsQ/1hl
>>611
そのように言われてしまった

curry :: ((a, b) -> c) -> a -> b -> c

さんの気持ちを答えよ(140字)
0613デフォルトの名無しさん2015/06/21(日) 21:24:27.97ID:Sh7VBIsF
(それは雰囲気一緒なのでそういう名前になってるのでいわゆるカリー化とはちょっと別では)
0614デフォルトの名無しさん2015/06/21(日) 21:40:32.89ID:HwEzsZwl
>>612
それはカリー化でもなんでもない。
見ての通り

(a,b) -> c

のアリティは1だ。
0615デフォルトの名無しさん2015/06/21(日) 21:42:45.93ID:7XsQ/1hl
・多引数関数が存在するかどうか、の議論の前に「多引数関数とは何か」を定義したほうがいい。
・立場や考えた方によって「多引数関数とは何か」は異なりうる。
・一つの答えは「タプルを引数に持つ関数」
・「タプルという一つの引数を持ってるだけですよね?」というツッコミ。

よーく気をつけないと「多引数関数とは何か」 という話を蒸し返してしまう。
0616デフォルトの名無しさん2015/06/21(日) 21:51:01.56ID:HwEzsZwl
Haskellの関数型構築子(->)の性質から関数型の値としての
関数の引数は常に(->)の左に来る型なんだからな。

タプルを引数にとるのが多引数だと言い出せば
リストを引数にとるのは可変長引数だということになる。
後者がおかしいと思うなら前者もおかしい。
0617デフォルトの名無しさん2015/06/21(日) 22:16:31.58ID:X7jEdUgs
Text.Printf 「呼んだ?」
0618デフォルトの名無しさん2015/06/21(日) 22:29:13.88ID:yL+fCFF6
mapは単項演算を可変長引数にする
reduceは二項演算を可変長引数にする
というのは別におかしくない
Haskellにこだわらない人ならそう思う可能性がある
0619デフォルトの名無しさん2015/06/22(月) 00:13:49.02ID:egF2isgn
         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
      /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
      l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
      l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
     l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
     l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
     ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
    ヽ:::::    ̄ .)::;  l  ̄   l::::/    < 排便ダン
     、:::::..   /:::; .,-、     l:::/、
    ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ
     l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
   l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
   l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\
      /⌒\〆',  `  ̄ ´  ゝ/⌒\
    /  ノつ\ ・    ・  /⊂  ヽ!
o0○ノ  /  3  \ (::::⌒ヽ / とノ\ ヽ○0o
(    /、_ノ\   Y `(_、_)   /  \´  )゚
 \_)    `ヽ   : :;;*:;   : : : |    (_ノ
         人__;;:;;、___ノ          ヽヽ        ヽヽ
             ;:;;:;;:;,,           ──┐ |  |   ──┐ |  |
          ∬ ;;:;::.;::.::;::..:;:..: ∬          /  |  |      /.  |  |
      ・〜   ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.:          ノ    ノ  ┐ ノ    ノ  ┐
          ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬                 ┴    ヽヽ     ┴
              :"
0620デフォルトの名無しさん2015/06/22(月) 07:30:14.32ID:7ItaFFjL
不毛な議論はやめろ
0621デフォルトの名無しさん2015/06/22(月) 07:38:37.78ID:8relXNjB
毛の壁だから不毛な訳ない
0622デフォルトの名無しさん2015/06/22(月) 08:33:39.76ID:jkkSdEVt
不毛な議論はやめて早く契約をという
きみたちはいつもそうだ
0623デフォルトの名無しさん2015/06/22(月) 10:49:06.51ID:HczZ6Mad
>>607
有り体に言えばそうなるわな
0624デフォルトの名無しさん2015/06/22(月) 16:22:57.80ID:uDj89vD5
         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
     /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
     l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
     l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
    l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
    l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
    ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
   ヽ:::::    ̄ .)::;  l  ̄   l::::/
    、:::::..   /:::; .,-、     l:::/、
     ::::::::  ゝヽ- ー' 、     l::/,
      ,:、:: / ,--、,-.、_ l     /        
       、::、 `ー ̄-'    /
         、::ヽ      /:
    /´⌒´ヽゝ ── 'ヽ⌒ヽ
   /   ィ   ,  ヽ  , )` `ヽ
  /    ノ^  ー   '` ー 'ヽ   ゙i
.. ノ  ,,,ノ            Y´゙  )
 (   < |             !  /
  ヽ_  \           ノ_/
    ヽ、__ ヽ.ー     @  ノ  ソ、
      〈J .〉  ヾ、.::;;;;;;::.ノ |ヽ-´
      /""     ;ミシミッ  .|
      レ    .イ、_∪ノ  .リ
     .,ゝ    ,ノ   |  ' ヽ ノ
    / ` レリ  i´   リ
    i    /    `、   i'
     〉  イ      〉  |
    /  ::|      (_ヽ \、
   (。mnノ       `ヽ、_nm
0625デフォルトの名無しさん2015/06/22(月) 20:02:55.77ID:yB0CTLEJ
毛の壁を風化させない勢、なんなんですかね
0626デフォルトの名無しさん2015/06/23(火) 02:22:17.45ID:wiF7wKM1
rubyで言うところのcase文はhaskellでどう書くとスマートですか?
case x #長さ1の文字列とする
when 'a'..'z'
...
when '0'..'9'
...
when '#'
...
else
...
end
0627デフォルトの名無しさん2015/06/23(火) 05:33:12.62ID:EWNumgnc
引数の性質で場合分けするなら素直なのはガードだけど
もっとかっこいいやり方はあるかも

f :: Char -> a
f x
| x `elem` ['a'..'z'] =
| x `elem` ['0'..'9'] =
| otherwise =
0628デフォルトの名無しさん2015/06/23(火) 11:17:40.69ID:30kOauSN
reduce関数やrange関数やmap関数は、
命令型のループでしか書けません。なぜならば、ノイマン型コンピュータという
ハードウェアは究極的には命令型でしか動作しないからです。
関数型の機械語なんて存在しません。
0629デフォルトの名無しさん2015/06/23(火) 12:56:24.51ID:HcqKhimH
オブジェクト指向言語の機械語も存在しないけどな。

究極的には人間は原子でてきてますとか言われてふーんとかはーとかしか思わんし
目の前の人が美人かどうかは原子関係ないすね。
0630デフォルトの名無しさん2015/06/23(火) 13:34:07.31ID:DUXK3D31
>>628を見てこれを思い出した↓

>あのさー、「二次元はただの絵」なんて言葉には何の意味もないわけよ。当たり前すぎる。

>ただの絵って、そりゃ絵だよ。そんなの誰にでもわかるって。
>これは言い換えるとね、例えば友達が彼女の写真を見せてくれたとして、
>「これはただのインクの集合だ」と言ってるのと同じなわけよ。
>もっと言うと、友達の恋人を指差して、「こいつはただのタンパク質だ」と言ってるのと同じなわけよ。
>別に間違ってないよ。写真はインクだし、人間はタンパク質だ。でもそれがなんだっての?
>インクだから感情を抱くのは間違いだ、タンパク質だから好きになるのは間違いだ、とでも言うの?
>それはちょっとバカすぎるね。バカすぎる。「二次元はただの絵」ってのはそういうのと同じなんだよ。
>好きになるのは人格としての、存在としての彼女だろうが。物理的構造なんてどうだっていいんだよ。
>そんな当たり前のこともわからないわけ?
0631デフォルトの名無しさん2015/06/23(火) 13:47:23.60ID:6v7jQlnd
ノイマン型じゃないアーキテクチュアとか普通に存在するし、
FPGAのお蔭で個人レベルでもできるんだが。
0632デフォルトの名無しさん2015/06/23(火) 14:35:28.11ID:GZlJHPMK
まあ関数型言語が機械語のようなもので定義されることが多いのは事実だよね
あとは
「定義の循環なんて存在してはならない」
という思い込みを否定できるかどうか
それさえ否定できれば、逆に機械語を関数型で定義する可能性も理解できると思う
0633デフォルトの名無しさん2015/06/23(火) 14:49:11.65ID:rMQdQ9WV
import Data.Char で isAlpha とかが使えるからちょっとだけ楽になるね(構造としての格好良さではない)
0634デフォルトの名無しさん2015/06/23(火) 14:50:45.63ID:5/w+bsnn
>>628は毛の壁ブログのコピペ
http://kenokabe-techwriting.blogspot.jp/2015/04/amazon_28.html
0635デフォルトの名無しさん2015/06/23(火) 18:05:36.94ID:x4Ozc/Jn
エロ漫画でヌいてる奴に、「それむっさいオッサンが描いた絵だよ」って言って萎えさせる奴いるけどさ、
むっさいオッサンが生み出したものでヌいておかしいっていうなら、そのむっさいオッサンに可愛い娘さんがいたらセックスしたいと思わないのかね
0636デフォルトの名無しさん2015/06/23(火) 19:55:42.17ID:909KpOvq
定義が循環しちゃまずいだろ
0637デフォルトの名無しさん2015/06/23(火) 21:15:50.96ID:6v7jQlnd
>>632
>まあ関数型言語が機械語のようなもので定義されることが多いのは事実だよね

なにいってんだか意味がわからん。
関数型言語の意味論が機械語で与えられた例なんかないだろ。
0638デフォルトの名無しさん2015/06/23(火) 21:17:42.47ID:AaIPqvR+
多分定義と実装取り違えてる
0639デフォルトの名無しさん2015/06/23(火) 21:37:51.41ID:rcOEv9Ao
ひょっとして(e?)BNFのことを言ってるのかな?
0640デフォルトの名無しさん2015/06/23(火) 23:28:11.76ID:GZlJHPMK
仕様書に未定義とか書いてあるのは
完全な定義は実装で決まるという意味なんじゃないの
0641デフォルトの名無しさん2015/06/23(火) 23:35:23.41ID:FjdLJNiv
その実装にはどんな非決定的な穴があってもいいんだよ
0642デフォルトの名無しさん2015/06/24(水) 00:16:40.45ID:KkHlevhV
>>640
それは実装依存で未定義とは区別することが多い
0643デフォルトの名無しさん2015/06/24(水) 00:26:39.98ID:MR5fwWu8
実装が定義、ソース読め
ってことじゃないの
0644デフォルトの名無しさん2015/06/24(水) 01:16:05.07ID:k2PpIK+f
>>643
そんな(少し前までの)Rubyみたいなこと言われても。

>>640
未定義っつうのは文字通り未定義。
言語仕様にないので、なにが起きようが関知しない。
未定義動作の結果オレの財布が空になっても富士山が噴火しても構わない。

というか、もっと正確に言えば、未定義部分は言語仕様がないのだから
そこがどうなっていようが、それはその言語の「実装」とすら言えない。
0645デフォルトの名無しさん2015/06/24(水) 02:27:11.04ID:zaWMLH1h
>>640
(まともな言語における)未定義ってのは、その部分については、各実装によって内部表現が異なっても構わないという明言だよ
要は速度と効率のために各ベンダに独自の最適化が許される、意図的に定義されない部分
そういう未定義部分に依存しないコードを書くのはプログラマの責任
0646デフォルトの名無しさん2015/06/24(水) 02:58:03.53ID:k2PpIK+f
そりゃ意味と機能の問題を取り違えてる。
未定義動作を許すことが何の役に立つかと未定義動作そのものが何かは別の問題だ。
0647デフォルトの名無しさん2015/06/24(水) 07:27:51.62ID:uN9f53jR
現実に起こる問題といえば
未定義の部分はコンパイラ作成時点でテストして保証されてないから
出力が一意になるかわからんし最悪実行不可能なファイルが生成されるかもしれないってくらいか
0648デフォルトの名無しさん2015/06/24(水) 07:37:20.43ID:NJ59k6EW
>どんな非決定的な穴があってもいい

>オレの財布が空になっても富士山が噴火しても構わない

実装がどうなるか予知できないと書いてあるだけだが
「予知能力がない」ではなく「全知全能の筆者が許可した」と解釈すると大変な事になる
0649デフォルトの名無しさん2015/06/24(水) 11:36:01.73ID:Dk9G0+2n
数学で
0以外の実数を0で割れば解なし
0を0で割れば未定義
みたいな
0650デフォルトの名無しさん2015/06/24(水) 13:33:31.02ID:q/iymKMR
それはどっちも未定義
0651デフォルトの名無しさん2015/06/24(水) 13:41:36.12ID:RcaJrYdV
仕様が未定義ならどんな実装してもかまわないので「0を0で割ると富士山を噴火させる」実装もOK


というだけ。
0652デフォルトの名無しさん2015/06/24(水) 15:06:59.29ID:4h3P/eVf
http://twilog.org/ohagiya/search?word=UCLA&;ao=a
0653デフォルトの名無しさん2015/06/24(水) 18:30:23.37ID:jBd8hVQL
非決定性プログラミングしたい場合
Lisp系だとambや継続使って解を1つみつけて終了だけど
モナド使うと全ての解を列挙できるってことでいいのかな
0654デフォルトの名無しさん2015/06/24(水) 21:39:12.60ID:RcaJrYdV
>>653
わりとマジであなたが言ってることイミフ。

「非決定性」だとか「継続」だとか難しげな言葉を振りかざすのではなく
基礎からきちんと学ぶことをおすすめします。
0655デフォルトの名無しさん2015/06/24(水) 22:58:58.61ID:+CIvGoel
>>653
妙な思い込みをしているようだけど…
グレアムのOn Lispに、簡易Prologみたいなのを実装する非決定性プログラミングの例が載ってるから、
ちょっと勉強してみたら?
0656デフォルトの名無しさん2015/06/25(木) 01:30:55.42ID:L5oPYlD8
二重ループの内側で無限に列挙してしまったら外側は1個めでフリーズする
Haskell使ってもこの問題はなくならない
0657デフォルトの名無しさん2015/06/25(木) 01:49:40.68ID:tWs5pbMG
それ、ただの単純ループですやん
非決定性ともバックトラックとも遅延評価とも関係ない…
0658デフォルトの名無しさん2015/06/25(木) 08:02:56.67ID:L5oPYlD8
というか、ただの問題だから
出題範囲とか関係ない
0659デフォルトの名無しさん2015/06/25(木) 09:34:06.79ID:En38UG6V
質問なのですが、HASKELLはJAVASCRIPTと比べてどのぐらい力強いですか?
0660デフォルトの名無しさん2015/06/25(木) 10:42:57.71ID:GMFUAARU
>>659 (haskell の戦闘力は) 53万です
0661デフォルトの名無しさん2015/06/25(木) 12:46:25.61ID:jSlSTYLT
CPUヘビーなことは向かないなんて泣き言いわない
0662デフォルトの名無しさん2015/06/25(木) 13:31:24.59ID:X9iBWgn+
>>659
JavaScriptがフリーザだとしたら、Haskellは18号くらい
0663デフォルトの名無しさん2015/06/25(木) 16:41:37.97ID:YBkNncXP
以下の関数をCPSに書き換えよ。
とか、その後の難しい話の下準備の為に修行できるドリルみたいなサイトありませんか?
なるべく解答付きで。
0664デフォルトの名無しさん2015/06/25(木) 17:09:47.33ID:B9JLKsO8
>>663

qiita 7shi で検索。
0665デフォルトの名無しさん2015/06/25(木) 17:20:28.66ID:B9JLKsO8
あ、あとCPSは階乗とフィボナッチのCPS版を見つけてきて、
fac(3)とかfib(4)あたりを手で簡約して見ると原理がわかる。

いったん理解すれば、あとは殆ど機械的に変換できるようになるよ。
そういや最初にCPS理解したときはその後しばらくCPS猿みたいなコード書いてたな……
0666デフォルトの名無しさん2015/06/25(木) 17:32:34.99ID:5pnqx1ov
でも a -> b -> c を a -> b -> m c に書き換えるのは
arityが見えるとかいう意味不明な能力がないとできないよね
0667デフォルトの名無しさん2015/06/25(木) 21:38:45.58ID:YBkNncXP
stack がパッケージの依存地獄を解決すると聞いて駆けつけました!
0668デフォルトの名無しさん2015/06/25(木) 21:40:43.48ID:YBkNncXP
>>664
頑張ります
0669デフォルトの名無しさん2015/06/25(木) 23:22:04.84ID:LfFLypOB
Freeモナドを上手に役立ててる例、ってなんかないですか?
0670デフォルトの名無しさん2015/06/25(木) 23:33:50.49ID:eM2m5jCT
不便だと思うところに役立てればいいんじゃないかな
0671デフォルトの名無しさん2015/06/26(金) 00:28:21.26ID:bFSe+PPP
>>670
料理のレシピのためのミニ言語、は楽しくてよかったんですが、便利か、実用的か、っていうとそうでもない感じがしました。

モナド的側面、つまり、前のコマンドの結果に応じて後に続くコマンドを変えられる、って性質を有効利用できれば良い、と思うのですが、いい案が浮かばず…

たまごを焼きすぎたらスクランブルエッグは諦めてたまご焼きにする。
うーん
0672デフォルトの名無しさん2015/06/26(金) 01:05:51.23ID:sGcqyMBf
Freeモナドが使えそうなところでは大抵の場合、
finally taglessな表現/Symanticsを使う方がいい。
0673デフォルトの名無しさん2015/06/26(金) 20:39:02.22ID:hymME7nU
なんとなくわかった
returnとjoinを作れないまたは作れるが使いたくない場合にFreeモナドを使うんだろ
0674デフォルトの名無しさん2015/06/28(日) 07:58:01.92ID:UfM5xTqU
ほざけ無能ども
0675デフォルトの名無しさん2015/06/28(日) 09:29:10.20ID:PsA9Isd2
>>674
どうした突然。何かつらいことでもあったのか。
0676デフォルトの名無しさん2015/06/28(日) 14:22:33.44ID:eK2mTTNw
HaskellerはOCamlerを見下してますか?
0677デフォルトの名無しさん2015/06/28(日) 14:45:38.67ID:oAeIj0m7
HaskellerかつOCamlerですが何か?
0678デフォルトの名無しさん2015/06/28(日) 15:08:18.01ID:CsAfdxFY
オーキャメルってすごいの?
0679デフォルトの名無しさん2015/06/28(日) 15:45:29.76ID:sCkqyjMf
ほとんど同じ
型が違うとか批判ばかりで代案を出せないコンパイラと、そいつに逆らえないプログラマ
全然すごくない
0680デフォルトの名無しさん2015/06/28(日) 17:40:06.78ID:A43RH85D
開発環境は、その上で作られた成果物と、
作るのに使ったリソース(人、時間、金など)で比較すべき

まぁ、たいした成果物が挙げられないようでは話にならんがな
0681デフォルトの名無しさん2015/06/28(日) 18:22:42.20ID:sCkqyjMf
どうせそう言われるだろうと思って
言われても平気な言語を二つも三つも覚えるんだよね
観賞用、保存用、予備みたいなあれ
0682デフォルトの名無しさん2015/06/28(日) 18:45:49.13ID:TzgnuxBg
寄らば大樹の陰(笑)
0683デフォルトの名無しさん2015/06/28(日) 20:48:17.29ID:sCkqyjMf
同じのを三個買ってきたのに使用頻度のデータを取るのは時間と金の無駄だろ
0684デフォルトの名無しさん2015/06/28(日) 22:57:53.15ID:GoQYkhEF
>>677
あなたはHaskellを知ってるOcamlerです。Haskellerではありません。
0685デフォルトの名無しさん2015/06/28(日) 23:08:27.40ID:PermaxaH
宗教かよ
0686デフォルトの名無しさん2015/06/28(日) 23:24:45.18ID:CsAfdxFY
じゃあ、ここでEmacsとVimの雌雄を決しようぜ
0687デフォルトの名無しさん2015/06/29(月) 05:59:50.21ID:Qi5/2Z+9
Ocamler = 岡村
0688デフォルトの名無しさん2015/06/29(月) 06:43:23.70ID:brwnweVx
>>684
調査する側が答えを決めてるなら世論調査とかビッグデータとか無意味だな
0689デフォルトの名無しさん2015/06/29(月) 10:57:15.25ID:8+Jbzv8W
>>679
>型が違うとか批判ばかりで代案を出せないコンパイラと、そいつに逆らえないプログラマ
>全然すごくない

才能を感じるw
0690デフォルトの名無しさん2015/06/29(月) 20:28:54.62ID:UsldY24Z
おまえらえらそうにほざいてるけど、HaskellでGUIアプリ作れんの?
0691デフォルトの名無しさん2015/06/29(月) 20:34:47.53ID:I6LM+XSd
>>690
ほざいてないし作れない
0692デフォルトの名無しさん2015/06/29(月) 22:11:01.07ID:6j3t6Ku/
ほざいたし作った
0693デフォルトの名無しさん2015/06/29(月) 23:37:46.91ID:dOBb6but
今 Haskell で GUI アプリを作ることにどれほどの意味がある?
無駄に苦労するだけで、たいしたメリットは得られないと思うが。

C# や Java などの方が意図したことを素直に書けると思うぞ。
0694デフォルトの名無しさん2015/06/29(月) 23:43:17.21ID:8+Jbzv8W
>>690
作れるし作っているが楽しくはない。
0695デフォルトの名無しさん2015/06/29(月) 23:46:32.90ID:QGo7kC4a
GUI原理主義なんなの?
0696デフォルトの名無しさん2015/06/29(月) 23:56:20.64ID:NIwVXw8K
(Haste で javascript にコンパイルして)作ってる
0697デフォルトの名無しさん2015/06/30(火) 00:41:54.66ID:xJJVLGS/
>>695
EmacsとVimを懲らしめる主義(適当)
0698デフォルトの名無しさん2015/06/30(火) 01:13:42.18ID:Jhz+vTOP
Autocadは基本コマンド。
0699デフォルトの名無しさん2015/06/30(火) 07:58:21.93ID:c40dQzwL
>>693 状態のセーブがすげー簡単
苦労は特にない
0700デフォルトの名無しさん2015/06/30(火) 08:02:38.09ID:c40dQzwL
というかHaskellだろうが何だろうが
GUIなんかロジックの部分に比べれば簡単
0701デフォルトの名無しさん2015/06/30(火) 12:03:29.96ID:xY5YXWOJ
そうやって【自称関数型】のヤカラはいつも逃げる
GUIで使えるアプリも書けない
0702デフォルトの名無しさん2015/06/30(火) 12:19:59.61ID:avn7235t
Gtk2hsとか
0703デフォルトの名無しさん2015/06/30(火) 12:55:10.53ID:g8mVBFW2
いや普通にwxHaskellでもなんでも使って書けるから。
ただ抽象化が巧く嵌らないから楽しくないだけ。
0704デフォルトの名無しさん2015/06/30(火) 15:13:39.82ID:X6br0/jB
ウィンドウシステムで動く以上、オブジェクト指向が一番いいんじゃないの。
ウィンドウってオブジェクトそのものだし。
0705デフォルトの名無しさん2015/06/30(火) 17:14:12.45ID:vxf+DpiB
メッセージを受け取る関数 Message -> IO () で引数をパターンマッチすればいいよ
Cのswitch文を使うウィンドウシステムと同じ
0706デフォルトの名無しさん2015/06/30(火) 18:20:38.25ID:c40dQzwL
GUIどころかOSごとHaskellで書いた例:http://programatica.cs.pdx.edu/House/
0707デフォルトの名無しさん2015/06/30(火) 18:42:24.07ID:X6br0/jB
>>706
2chで作ってたOSにも及ばない感じに見える。

世界の一流研究者が集って10年かけて作ったものがこれでは、Haskellの
実力が低いように見える。
ドヤって感じで出されると余計。

少なくとも2chで作ってたOSは、もう少し実用性があった。
0708デフォルトの名無しさん2015/06/30(火) 18:51:10.78ID:X6br0/jB
昔、JSはCの二倍速いとか、JavaはCの20倍速いとか言われてて、ベンチマークが
2chのスレに貼り付けられてた。

今のHaskellは同じような感じがする。

JSは、アプリケーションを拡張するのに使えばとても楽な言語だし、Javaは
互換性やわかりやすさに焦点をあてた言語。
良い部分を宣伝したらいいと思うのだけど、どうも原理主義の人は欠点を
否定することに一生懸命になる。

Haskellはこういうことに向いてないね、でも出来ないわけじゃないよって
位で良いんじゃないのかな。
0709デフォルトの名無しさん2015/06/30(火) 19:02:56.27ID:c40dQzwL
>>706 言いたいことはわからなくもないが全然「一流研究者が集まって」ないからw
0710デフォルトの名無しさん2015/06/30(火) 19:04:08.01ID:c40dQzwL
>>707 のまちがいスマソ
0711デフォルトの名無しさん2015/06/30(火) 19:10:15.18ID:9foLA8yU
2chのOSってhigeponが作ってたmonaでしょ。目的が違うし、実用性も同程度だと思うが。
そういえばhigeponさんも関数型erになったが最近どうしてるんだろう
0712デフォルトの名無しさん2015/06/30(火) 19:55:09.60ID:FWhQ2ahg
Haskellが得意とする(向いている)アプリケーションとは何でしょうか。

また、なぜそれが他言語に比べてHaskellが有利だと言えるのでしょうか。
0713デフォルトの名無しさん2015/06/30(火) 20:01:42.67ID:g8mVBFW2
>>712
構造を持ったデータの処理・操作。
理由は人智を超えない範囲で充実した型システム。
0714デフォルトの名無しさん2015/06/30(火) 20:34:52.77ID:vxf+DpiB
リスクの高いアプリケーション
得意なことは何かではなく最悪のケースは何かを考えること

理由は型システム
0715デフォルトの名無しさん2015/06/30(火) 20:54:40.33ID:FWhQ2ahg
>>714
リスクというのは人命ですか?
もしかして医療関係のアプリケーションでよく使われていますか?
0716デフォルトの名無しさん2015/06/30(火) 21:54:36.59ID:vxf+DpiB
人命というのは何か違う気がする
単に死ぬことと意図的に殺すことを区別できなくなる
0717デフォルトの名無しさん2015/06/30(火) 21:57:27.47ID:X6br0/jB
F-35にHaskellが使われたなら信じる。
0718デフォルトの名無しさん2015/07/01(水) 00:19:00.28ID:hCLvX6t9
>>699
>> 状態のセーブがすげー簡単
これどういう意味? MonadIOの中だったらどこでもliftIO でファイル保存アクション実行できるよ、ってこと?
0719デフォルトの名無しさん2015/07/01(水) 08:39:27.15ID:tJW6CsdE
>>704←固定観念に囚われてる愚か者の事例。
0720デフォルトの名無しさん2015/07/01(水) 08:49:50.77ID:wl+QWyy/
ちょこっとかじった初心者ですが、
型システムのおかげでバグが出にくいっていう長所は
GUIアプリ作るときにも活かされますか?
0721デフォルトの名無しさん2015/07/01(水) 09:37:31.97ID:I91Dcp9K
>>720
Haskellつかったらバグが自動的に減るのではなく、
強力な型システムのお陰で、型レベルのバグがコンパイル時に
検出できるだけ。Cなんかではポインタへの誤ったキャストが
コンパイルを通ってしまい実行時(システムが稼働したとき)にようやく
発見されるという惨事が相次いだので、コンパイル時に前倒し
してエラーを補足できるという点が期待されていた。

現実には型が合っていても実装を間違うことはあるので、
Haskell使ったら「自動的に」高品質になるというのは完全嘘だと思ってる。
0722デフォルトの名無しさん2015/07/01(水) 10:28:08.57ID:tOajYpeJ
自分でHaskell書いたことのない奴が多すぎだろ
713くらいしかまともなこたえがない
0723デフォルトの名無しさん2015/07/01(水) 11:45:24.51ID:gMCljQ/I
>>720
GUIはコロコロ仕様が変わるので
むしろバグっぽいコードも書けるというメリットのほうが大きい
0724デフォルトの名無しさん2015/07/01(水) 11:45:40.65ID:zqTVEjze
型が強力なので、バグ以前に、適切な型を考えて、それに従って関数書けば
自然にプログラム書けて楽なことが多い。Type-directedプログラミングというか。
0725デフォルトの名無しさん2015/07/01(水) 11:48:56.78ID:zqTVEjze
>>718 いや単に状態が陽だから、何をセーブすれば良いかわかりやすい、というだけ。
まあGUIアプリに限った話ではないか。
0726デフォルトの名無しさん2015/07/01(水) 12:00:05.77ID:XEDFaQMZ
テスト駆動とかだったらテストをHaskellで書く筈だが
Type-directedはHaskellを書く機会を減らしてしまう諸刃の剣
0727デフォルトの名無しさん2015/07/01(水) 14:49:29.48ID:rMwDHu3x
Haskellで書けばバグが完全に駆逐できるという話をよく聞く。

Haskellは並列化が効率的に行えるのでC++の10倍速いと言う記事を見た。
0728デフォルトの名無しさん2015/07/01(水) 16:22:48.22ID:YQJkkFEW
リスクの最たる例が人命というなら、地球を一人の人間と捉えた場合、経済はその血流であろう。血流を止めると地球さんがヤバい
経済界に寄与するソフトウェアを他言語版より多く送り出しているならばHaskellはリスクと戦う最前線の言語だといえよう
0729デフォルトの名無しさん2015/07/01(水) 18:22:25.85ID:NjN/zNsy
で、おまえらGUIアプリ書けるのか?
Haskellでカットアンドペーストできるエディタやペイントソフト書けんの?
0730デフォルトの名無しさん2015/07/01(水) 18:22:57.88ID:NjN/zNsy
おまえらは「机上」でしか語れない
0731デフォルトの名無しさん2015/07/01(水) 18:35:28.08ID:wHMLdS0x
クリックカウンターおじさんのエミュレーションやめろ
0732デフォルトの名無しさん2015/07/01(水) 18:38:03.08ID:tOajYpeJ
GUIライブラリのコンポーネント使っていいなら誰にだって書ける。
もちろんHaskellでも問題なく書ける。エディタでバイト列収納しとくための
ロープから実装しろという話ならHaskellはかなり有利だ。
0733デフォルトの名無しさん2015/07/01(水) 19:31:24.61ID:W0dcBNHQ
>>730
確かに、机上の空論からのぶっつけ本番は非常に危険だ
しかし机上を危険視するのは間違っている
0734デフォルトの名無しさん2015/07/01(水) 19:53:03.17ID:XO0z7h0V
そもそも情報処理って机上がものいう世界だろ
0735デフォルトの名無しさん2015/07/01(水) 19:53:39.62ID:XO0z7h0V
クリックカウンターおじさん本人なんじゃないか?
0736デフォルトの名無しさん2015/07/01(水) 20:02:00.78ID:I91Dcp9K
机上の空論よりヘボくても動けるものを作れる奴が偉いとか典型的なマウンティング
0737デフォルトの名無しさん2015/07/01(水) 20:16:46.99ID:zqTVEjze
>>726 QuickCheck?
0738デフォルトの名無しさん2015/07/01(水) 20:18:47.95ID:zqTVEjze
>>727 それは嘘かhype
0739デフォルトの名無しさん2015/07/01(水) 20:25:01.06ID:N2f2t6hF
>>732
Haskellが凄いという話はよく聞くし、現代的なGUIエディタの実装に超有利という話も出てきた。

ところが、Haskellで書かれた著名なエディタは無いし、ライブラリやコンポーネントを使うなどと言うけど、
そのライブラリやコンポーネントはHaskellで書かれた著名なものがあるの?

極端な話、そんなに有利なら、Haskellで書かれたコンポーネントをそして
APIを他の言語から使ってるんじゃないの。
凄い凄いという話をよく聞くものの、最終的にC/C++で書かれたライブラリを
呼び出せますよって話になる。

C/C++を呼び出してて本当にHaskellの凄いところであるゼロバグを実現できるの?
言っとくけど、C/C++は容易にバグが紛れ込むし、Haskellのようにゼロバグなんてことは無いよ?
Haskellから呼び出すだけで、C/C++のバグも本当に消えるの?
0740デフォルトの名無しさん2015/07/01(水) 20:30:36.90ID:WaFLqKtq
ぐうの音もでん
0741デフォルトの名無しさん2015/07/01(水) 20:35:48.17ID:hkSyx5v6
C/C++ラッピングに頼るのは、国産OSを開発せずWindowsやUnixやLinuxに頼るようなものだ
Haskellネイティヴなライブラリへの置き換えが必要ではないか
0742デフォルトの名無しさん2015/07/01(水) 20:40:40.77ID:RlBRpOsX
>>739 誰もそんなこと言ってない。
どこかよそで読んだなら、まともな話かどうか判定するからソース教えて
0743デフォルトの名無しさん2015/07/01(水) 20:45:43.16ID:hhCpaelW
この世界、技術的に良いものが必ずしも広まらないことは日常茶飯事。
逆に、マイナーだから優れている、も成り立たないが。
0744デフォルトの名無しさん2015/07/01(水) 20:56:44.98ID:4S8xRTlr
>>739
Haskellで自動回避できるのは型の不整合にまつわるバグであって、算法上のバグを回避できるわけじゃあないよな
システム記述言語としてのHaskellは、他言語に比べて特に凄いということはないよ
動かしながらバグを取る必要があるのはC/C++と同じ
0745デフォルトの名無しさん2015/07/01(水) 20:59:56.29ID:WaFLqKtq
まあ、最近Facebookが出して世間を賑わしてるリアクティブプログラミングも元はHaskellで作られたやつだ。
あと、テストライブラリのQuickcheckも色んな言語に輸出されてるね。

思うんだけど、Haskellerのみんなの興味が、売れるアプリ、広く使われるソフト、
で必要とされるもんとズレてんじゃないかな。

1. その言語を使える技術者の確保が容易
2. ハード(スマホ)の最新機能がすぐ使える、
ドキュメントが豊富
0746デフォルトの名無しさん2015/07/01(水) 22:46:09.54ID:SBuzyDQs
ArrowがあればMonadは要らんのやな
最初からArrowにしとけばよかったやん
0747デフォルトの名無しさん2015/07/01(水) 22:54:31.49ID:hkSyx5v6
元はHaskellで作られたのに実践は他言語だったの?
Haskellは何か実践的開発上の問題を抱えてるの?
0748デフォルトの名無しさん2015/07/01(水) 23:08:08.48ID:1n3wggjU
つまんない煽り愛してないでまともな話しろ
0749デフォルトの名無しさん2015/07/01(水) 23:09:21.21ID:WaFLqKtq
>>747
もちろんHaskellのリアクティブライブラリもそれなりに使えるもんだったし、以降今に至るまで派生ライブラリがたくさん作られた。
でも、javascriptの方がより賑わっていて(開発者が多くて)Facebookにも資金力がとても高い、ってことさ。

つまり、Haskellの弱さは人がいないことだ、と俺は思う。
なぜ人がいないかは、理由は色々あるけど、外から見て何が得意なのかがよくわかんないつーのが大きくて、それはHaskellでの目に見える成果があんまり無いからで、その理由は人がいないからで、つまり
0750デフォルトの名無しさん2015/07/01(水) 23:32:51.19ID:W0dcBNHQ
>>747
逆に他言語で実践できない部分にガラパゴス化という問題があるとも言える
ガラパゴスが強いと思うか弱いと思うかは人それぞれ
0751デフォルトの名無しさん2015/07/01(水) 23:50:13.91ID:j1v8qj3k
つまりクリックカウンターおじさんの言ってることは正しい面もある、と?
0752デフォルトの名無しさん2015/07/02(木) 01:00:22.82ID:xB5xsyxT
言語仕様の話がしたいのか、ライブラリ群の話がしたいのか。
0753デフォルトの名無しさん2015/07/02(木) 01:43:36.68ID:0H4A+sBi
技術的内容を理解していない知ったかぶりの言葉遊びは無用。よそでやれ
0754デフォルトの名無しさん2015/07/02(木) 06:15:08.75ID:0QJ6vZJG
言葉遊びをやめさせるには沈黙するインセンティブが必要
黙秘権とか
逆に、対案を出せなど沈黙しないことが強く求められれば言葉遊びはもっと酷くなる
0755デフォルトの名無しさん2015/07/02(木) 09:19:10.46ID:RsQjnldo
”クリックカウンターおじさん”という名誉棄損の呼び名を確認。
0756デフォルトの名無しさん2015/07/02(木) 09:50:57.63ID:L8xarZNp
クリックカウンターのような状態遷移をHaskellでは作れないという批判?
0757デフォルトの名無しさん2015/07/02(木) 10:03:54.46ID:u7x11Nqb
クリックカウンターおじさんの問題提起については評価しないとだめだな。
0758デフォルトの名無しさん2015/07/02(木) 10:28:08.52ID:zhB7tSAg
環境構築(cabal)がクソでライブラリを探すのも入れるのも更新するのも面倒くさいってのも有ったんじゃない
Stackでどうなるか
0759デフォルトの名無しさん2015/07/02(木) 11:10:25.42ID:e+SQ5knv
著者が挙げている「クリックカウンター」や「お絵かき」の類を作成するのに特別なexpertiseは不要で、
単に使用するGUIライブラリ・グラフィックスライブラリのドキュメントが読めれば充分なので、
その趣旨は私にはまったく判然としません(当該の記事で著者がOCamlで「お絵かきロジック」を
実装してみせよと要求する一方で自身ではJavaScriptによるそれを公表していない点も気になります)。
もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用を使用せずに書くのもなんら困難ではありません。
0760デフォルトの名無しさん2015/07/02(木) 13:57:23.04ID:y1SlVF6x
字数増やせば賢く見えるわけじゃないんですよ
0761仲本だいすけ2015/07/02(木) 15:06:12.36ID:ZQFEgiVc
あの疑似科学野郎を黙らせるのになぜ半年もかかったのか?
0762デフォルトの名無しさん2015/07/02(木) 17:11:55.72ID:L8xarZNp
>>758
環境のクソさのお陰でわりと布教しづらかったので stack にはマジ期待してる

>>759
なんら困難ではない。。。かなぁ???
0763デフォルトの名無しさん2015/07/02(木) 17:35:08.64ID:xB5xsyxT
破壊的代入なしで書くのは別に困難じゃないだろ。
入出力そのものを副作用だと言い出すならどんな言語でも無理だしな。
0764デフォルトの名無しさん2015/07/02(木) 17:46:38.81ID:FcRiDZyX
>>759
当事者ご降臨ですかw
確かに保身第一、全く相手にしてませんが何か?っていう答え方だな
0765デフォルトの名無しさん2015/07/02(木) 18:22:32.80ID:aW/wUO6R
>>761
おまえらの不徳の致すところ
0766デフォルトの名無しさん2015/07/02(木) 18:30:48.79ID:e+SQ5knv
おいおい、単に http://qiita.com/nonstarter/items/2763f5d85f2b8df3b18b からのコピペだぞ。検索もできんのか…
0767デフォルトの名無しさん2015/07/02(木) 18:55:57.21ID:y1SlVF6x
宣言型プログラミング言語スレで脳内設定エスパーしろとな
0768デフォルトの名無しさん2015/07/02(木) 19:00:17.41ID:xB5xsyxT
Ocamlアイドル ‏@no_maddo 24時間
追記部分があるのを知らなかった、めっちゃ面白かったです
関数型言語 - 『関数型プログラミングに目覚めた!』のレビュー(Day-1)
on @Qiita http://qiita.com/nonstarter/items/2763f5d85f2b8df3b18b


kenokabeさんの謎クリックカウンタとお絵かきのネタは仙台でも大人気だ!
0769デフォルトの名無しさん2015/07/02(木) 19:26:05.17ID:gqhA8KsA
これが何に使えるのかよくわからない。
0770デフォルトの名無しさん2015/07/02(木) 21:46:14.33ID:E90eWw9y
>>766-767
その程度のために Googleモナドを持ち出すなど軟弱な
0771仲本だいすけ2015/07/03(金) 01:48:03.52ID:RZmOyo0m
                  ,.-―: ̄`ー::::::::::、
                /::::::::::::.::::::::::::::::::::::::::::`::、、
               /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
               l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
               l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
              l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
              l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
              ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
             ヽ:::::    ̄ .)::;  l  ̄   l::::/
              、:::::..   /:::; .,-、     l:::/、
               ::::::::  ゝヽ- ー' 、     l::/,
                ,:、:: / ,--、,-.、_ l     /
                 、::、 `ー ̄-'    /
                   、::ヽ      /:
                 r‐''''^¨^⌒ ̄ ̄ ̄ヽ
               ,ノ`,           \
              ノ/             ヽ
             ι.}           λ    )
             ヽ(,.          ノ!   r'
               (          l  .,/
              ノ,,,,,,,,,,,,,,,,,,,,,,,,,,,,丿へ
             ノ              ,)
             (  ∵ ∧∵    /,,丿
             \,,,,/人\__ノ   /
             (  ) (__)    (   )
            《  l (___)   《 ̄ ̄》
           《__(____)  《____》
0772デフォルトの名無しさん2015/07/03(金) 03:37:23.69ID:aag7hyI7
180°回る首
0773デフォルトの名無しさん2015/07/03(金) 08:29:08.65ID:8+5j5k8x
>>761
相手が弱者だと思って戦いを始めるやつは撤退する口実を作れないから泥沼化する

強敵ならいつでも撤退を正当化できるのに
0774デフォルトの名無しさん2015/07/03(金) 08:38:57.07ID:R0ApVOfB
>>763
入出力は副作用でしょ普通
入出力無しにGUIを描くと言ってるのと同じで矛盾してる
0775デフォルトの名無しさん2015/07/03(金) 08:39:40.10ID:uImfavx2
あほか
0776デフォルトの名無しさん2015/07/03(金) 08:41:04.32ID:wl7u/SNJ
>>774
意味論による。
0777デフォルトの名無しさん2015/07/03(金) 08:46:11.05ID:R0ApVOfB
>>776
言ってる事が理解できないので詳しく
入出力で参照透過性を維持できる説明もよろ
0778デフォルトの名無しさん2015/07/03(金) 09:04:39.28ID:wl7u/SNJ
>>777
IOモナドの仕組みくらい自分で調べたらよろしい。
そして、グラフ書換系のどこにも副作用なんかない。
0779デフォルトの名無しさん2015/07/03(金) 09:11:48.16ID:R0ApVOfB
>>778
グラフ書換系はGUIとは関係ないだろう
はぐらかさないで説明ヨロ
0780デフォルトの名無しさん2015/07/03(金) 09:15:30.38ID:wl7u/SNJ
>>779
IOモナドは世界状態RealWorldを取るStateモナドと同じ意味論を与えることができる。
Stateモナドに副作用がないのと同様にIOモナドはモナドにも副作用はない。これが1。
IO a を RealWorld -> (RealWorld, a) と元の形に直した上で
Haskellのグラフ書換系上で入出力がどう見えるか考えてみればいい。これが2。

これでわからんなら私のせいではない。
0781仲本だいすけ2015/07/03(金) 09:46:07.14ID:6Fdm7Fxt
疑似科学おじさんまだいるの?病院行こうよ
0782デフォルトの名無しさん2015/07/03(金) 09:57:24.37ID:p7lUbcZE
岡部氏の「もっと世界観を」には賛成。
しかし関数プログラミングやFRPは銀の弾ではないとも思う。
なぜこうも銀の弾が出てこないのか?
0783デフォルトの名無しさん2015/07/03(金) 10:02:29.75ID:Iifsm05F
そんな事より毛ブログがなんで更新されないのかな?
0784デフォルトの名無しさん2015/07/03(金) 10:17:59.41ID:R0ApVOfB
>>780
グラフ書換系からモナドがどう見えるかは関係ない
実際にIOモナドから値を取り出し、副作用を伴う処理を使う際
参照透過性を維持できるという説明をよろしく
0785デフォルトの名無しさん2015/07/03(金) 10:19:49.54ID:vDmQcknf
まあとりあえずこれを読めよ
http://d.hatena.ne.jp/kazu-yamamoto/20090627/1246135829
0786デフォルトの名無しさん2015/07/03(金) 10:26:38.47ID:R0ApVOfB
>>785
そのリンク先の説明は理解できるが
今レスしている人はどの趣旨の説明でもない
0787デフォルトの名無しさん2015/07/03(金) 10:26:38.81ID:R0ApVOfB
>>785
そのリンク先の説明は理解できるが
今レスしている人はどの趣旨の説明でもない
0788デフォルトの名無しさん2015/07/03(金) 10:28:25.82ID:wl7u/SNJ
IOモナドの表現getCharが複数あってもRealWorldの値が違うので
決してノードが共有されないことに気が付かなかったんですかねえ。
グラフ書換でノードが共有されることと参照透過性との関係が
理解できてない可哀想な子だったか。
0789デフォルトの名無しさん2015/07/03(金) 10:32:05.52ID:R0ApVOfB
あ、すまん確かに3と同じ事いってるね
タプルをRealworld aと勘違いしてた
0790デフォルトの名無しさん2015/07/03(金) 10:39:21.05ID:R0ApVOfB
>>788
よく読んでいなかったよ謝る
0791仲本だいすけ2015/07/03(金) 10:48:00.79ID:Dt4z3lub
>>782
ThinkDifferent(笑)
0792デフォルトの名無しさん2015/07/03(金) 10:49:58.03ID:aSIkPSGQ
駱駝さん、アホに構ってんと、仕事しようよ…
0793デフォルトの名無しさん2015/07/03(金) 11:24:59.81ID:p7lUbcZE
> Haskell には副作用はない。なぜなら、Haskell が作るのは命令書のみで、それが実行されるのは Haskell の外での話だからだ。
そういえば、この解釈は酷い解釈だったな
0794デフォルトの名無しさん2015/07/03(金) 11:35:30.05ID:8+5j5k8x
>>793
・副作用は定義した時ではなく実行時に発生する
・引数 (RealWorld) は関数を定義した時ではなく呼び出した時に渡される
ほぼ同じ内容だ
同じ内容に優劣をつけるのは言葉遊びだ (遊ぶなとは言っていない)
0795仲本だいすけ2015/07/03(金) 11:39:29.06ID:TviClge2
楽しいから続ける(笑)
0796仲本だいすけ2015/07/03(金) 12:04:29.45ID:ri2L7Lgt
         ,.-―: ̄`ー::::::::::、
       /::::::::::::.::::::::::::::::::::::::::::`::、、
      /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
      l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
      l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
     l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
     l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
     ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
    ヽ:::::    ̄ .)::;  l  ̄   l::::/    < 排便ダン
     、:::::..   /:::; .,-、     l:::/、
    ,―::::::::  ゝヽ- ー' 、    l::/,、ヽ
     l,、,、,,:、:: / ,--、,-.、_ l    /::::::,、,、l
   l,、,、,、,、,、::、 `ー ̄-'   /:::::::::::,、,、l
   l,、,、,、,、,、,、::ヽ      /::::::::、,、,、,、,ノ:\
      /⌒\〆',  `  ̄ ´  ゝ/⌒\
    /  ノつ\ ・    ・  /⊂  ヽ!
o0○ノ  /  3  \ (::::⌒ヽ / とノ\ ヽ○0o
(    /、_ノ\   Y `(_、_)   /  \´  )゚
 \_)    `ヽ   : :;;*:;   : : : |    (_ノ
         人__;;:;;、___ノ          ヽヽ        ヽヽ
             ;:;;:;;:;,,           ──┐ |  |   ──┐ |  |
          ∬ ;;:;::.;::.::;::..:;:..: ∬          /  |  |      /.  |  |
      ・〜   ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.:          ノ    ノ  ┐ ノ    ノ  ┐
          ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬                 ┴    ヽヽ     ┴
              :"
0797デフォルトの名無しさん2015/07/03(金) 12:15:29.28ID:p7lUbcZE
>>794
ほぼ同じ内容だろうが、それらはどれも酷い解釈だと思うよ
0798デフォルトの名無しさん2015/07/03(金) 12:36:08.66ID:IUu1So5+
何が酷いの? IOが一級値である以上、最も正確な解釈だと思うが。
0799デフォルトの名無しさん2015/07/03(金) 12:38:18.64ID:InleWrcM
むしろそれ以外に、実際の実行結果に合う解釈はあるのか?
0800デフォルトの名無しさん2015/07/03(金) 15:16:07.46ID:msRG1Yik
>>796
顎の両脇の部分が、後ろで済ませたとぐろ糞に見える
0801デフォルトの名無しさん2015/07/03(金) 15:58:45.53ID:Vi+qPEKL
Prelude> let x = putStrLn "hello" in x >> x
hello
hello
Prelude> let x = putStrLn "hello" in seq x x
hello
Prelude>
0802デフォルトの名無しさん2015/07/03(金) 19:01:10.98ID:V10CPSDi
型=値の集合と思ってると IO でラップされた型は一体どんな値なのかと気にしてしまうんだね。
0803デフォルトの名無しさん2015/07/03(金) 19:04:32.10ID:Vi+qPEKL
>>802 それはIOに限らず抽象データ型一般について言えるかも
0804デフォルトの名無しさん2015/07/03(金) 21:18:44.48ID:XD0nd274
IO aが抽象データ型だとするとb -> IO aがFactoryMethod
IOはコンストラクタが隠蔽されているのだから必然的にそうなる
0805デフォルトの名無しさん2015/07/03(金) 22:59:59.80ID:8flj3gJm
言いたいことはわかるが空な多相型じゃなくてτ1 -> IO τ2とか書いてくれ(笑)
0806デフォルトの名無しさん2015/07/03(金) 23:22:54.07ID:XD0nd274
そもそも一番肝心な(->)のコンストラクタがない
Haskellの半分以上はコンストラクタやパターンマッチでは説明がつかない
0807デフォルトの名無しさん2015/07/04(土) 02:18:23.55ID:XsL/EKLB
半分以上のHaskell教えてよ
0808デフォルトの名無しさん2015/07/04(土) 09:50:27.87ID:WNuVOXDD
Haskell は数学を連想させるので絶対流行らん。
0809デフォルトの名無しさん2015/07/04(土) 10:25:08.25ID:8ixaKuBt
>>808
その「ので」が「今日は天気が良い『ので』どこかに出かけよう」ぐらいエエカゲンなんだよなあ
0810仲本だいすけ2015/07/04(土) 10:41:07.54ID:uNR/QH/o
                  ,.-―: ̄`ー::::::::::、
                /::::::::::::.::::::::::::::::::::::::::::`::、、
               /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、
               l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l
               l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l
              l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l
              l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l
              ヽ:::: ´、ひ> ;:  l .<ひ>'  、::::::::/
             ヽ:::::    ̄ .)::;  l  ̄   l::::/
              、:::::..   /:::; .,-、     l:::/、
               ::::::::  ゝヽ- ー' 、     l::/,
                ,:、:: / ,--、,-.、_ l     /
    ,.:':'゙'゙'゙:゙'゙':';.        、::、 `ー ̄-'    /
   r゙ ,.: :;;;:: : : :           、::ヽ      /:
   | : ::::~';::--ー'ー-----ーー;;:'゙ .: :` ‐- 、  |
  ,i    ::::::::::::::::::::::::::::::: ::: :ヾ        i
  r'     ::::::::::::::::: : : :::::: :::::  ::::. .      /
  |      :::::::::: : : : : ::: ::  ::         イ
  i      : : ::::::::::: : : ::::::: :         |
  |      ,.;イ-- .,           ,... -' i
   i      ,.;':/   ゙'ー-.,_ i    ,.イ::  /
  .i::::   /:/        ̄i   / ゙i   |
  │::  ノ::/         |   i   |  |
 r':: イ:::::i゙            |  |   i   |
 |:: | ヽ '-.,         ヽ 〈    ヽ ヽ.,
 i, , '-, ゙'ー'ー'          ヽ、`,ー、  `'ー'ー'
0811デフォルトの名無しさん2015/07/04(土) 11:47:31.61ID:D//5Uocc
筒井康隆が新潮10月号(9/7発売)に最新長編『モナドの領域』330枚一挙掲載
0812デフォルトの名無しさん2015/07/04(土) 14:12:51.24ID:WvwJxr10
Haskell は門限が7時の女子大生を連想させるので絶対流行らん。
0813デフォルトの名無しさん2015/07/04(土) 16:46:21.33ID:rWY2qCze
Haskell 擬人化するなら眼鏡で想像するひと多そう。
0814デフォルトの名無しさん2015/07/05(日) 03:00:57.48ID:18u325sL
http://jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
  ↑  ↑  ↑  ↑  ↑
0815デフォルトの名無しさん2015/07/05(日) 03:18:53.53ID:5EFP5F9v
リンク先政治広告なのでみなくてよろし
0816デフォルトの名無しさん2015/07/05(日) 11:32:05.80ID:j/NgsVfb
長期的に考えるんだ
最初は眼鏡で途中から眼鏡を外せば流行ると考えるんだ
0817デフォルトの名無しさん2015/07/06(月) 00:22:13.25ID:wlw6otNx
使うメリットが無い。
デメリットは多いのに。
0818デフォルトの名無しさん2015/07/06(月) 04:07:14.46ID:W9Wle9it
毛を引き寄せてしまった程の黒魔術的魅力がHaskellにあるのだろう
0819デフォルトの名無しさん2015/07/06(月) 04:12:56.58ID:G+yljX6j
goよさそうだなと思って覚え始めたけど型定義が貧弱すぎてやる気大幅ダウン
Haskellは禁断の果実だった
0820デフォルトの名無しさん2015/07/06(月) 10:19:51.08ID:9VlVzieP
システムプログラミング言語ならhaskellやった人はgolangよりrust結構気に入るだろうと思う
代数的データ型、型クラス、型推論、immutableがデフォルト、パターンマッチ、
メモリリークをコンパイルエラーにする
と結構 ml likeな言語
0821デフォルトの名無しさん2015/07/06(月) 10:24:54.61ID:9VlVzieP
>>818
毛を引き寄せたのはhaskellじゃなくてjsだろ
0822デフォルトの名無しさん2015/07/06(月) 18:54:20.21ID:yIxlkBRi
痴呆症ブログ更新きたよ!

749 名無しさん@ゴーゴーゴーゴー! 2015/07/06(月) 14:17:10.21 ID:IaVh3M450
http://kenokabe-techwriting.blogspot.jp/2015/07/javascript.html

おかえり!入院しろ!
0823デフォルトの名無しさん2015/07/06(月) 21:10:08.11ID:EN2KuOqG
>>820 いいことを聞いた、ちょっと触ってみようかな
0824デフォルトの名無しさん2015/07/06(月) 21:43:24.49ID:G+yljX6j
普及してる言語の中でミスが起きないよう設計されてるやつが欲しくてさ
Rustは人口少ないしScalaよりさらに関数型で安全そうだけどじゃあHaskellでいいじゃんってなる
0825デフォルトの名無しさん2015/07/06(月) 22:13:00.63ID:pYzRJ5bG
elixirとか
0826デフォルトの名無しさん2015/07/06(月) 22:38:54.30ID:/jetTYu7
末尾呼び出しが使えないとやる気が出ないね
ループでしか書けないからね
0827デフォルトの名無しさん2015/07/06(月) 23:08:12.61ID:G+yljX6j
静的型
直和型
再帰型
抽象型
独自(ドメイン固有)型
型推論
ダブルディスパッチ
高階関数
map/filter/fold
末尾再帰最適化

オブジェクト指向でもこれくらいサポートしてほしい
0828デフォルトの名無しさん2015/07/06(月) 23:11:36.25ID:8//4HfJE
相変わらず岡部健の記事は狂ってて面白い
0829デフォルトの名無しさん2015/07/06(月) 23:28:12.05ID:IO/OfGDx
>>824
rustは日本人ユーザが少ないだけでコミュニティは盛り上がってる
0830デフォルトの名無しさん2015/07/07(火) 00:34:34.08ID:/AiLg+DV
岡部が他人のコードを勝手に、不完全に書き換えて実行して
その結果を叩いてるぞ
0831デフォルトの名無しさん2015/07/07(火) 01:15:52.91ID:6n40dgbK
岡部の記事だけを読むと、説得されかけるのは疲れているからだろうか?
0832デフォルトの名無しさん2015/07/07(火) 01:30:24.54ID:0l2OmbIX
>>824
rustはc,c++と同じ低レベルプログラミング言語だから
haskell、scalaとは被らないよ
0833デフォルトの名無しさん2015/07/07(火) 01:44:46.81ID:5T5xC6ja
「ミスが起きない」の意味が違うんだよな。
HaskellとRustでは型に意図された機能がぜんぜん違う。
0834デフォルトの名無しさん2015/07/07(火) 04:38:19.84ID:wEQ5fYPF
>>833
どういう部分が?
所有権という概念が入るだけで、型付けは結構強めだと思うが
0835デフォルトの名無しさん2015/07/07(火) 05:07:24.51ID:wEQ5fYPF
>>831
洗脳…ですかね
0836デフォルトの名無しさん2015/07/07(火) 08:27:24.02ID:5T5xC6ja
>>834
Rustは高階カインドやGADT使えないでしょ。モナドすらない。
だけど線形型は使えて(所有権)、要するに基本のHindley-Milner systemからの
強化方向とその背景にある思想が全然違う。

データの構造に対する表現力を求めるのとリソース管理を求めるのと。
なおどっちも突っ込むと人智を超え始めるのはATSを見ればお分かりの通り。
0837デフォルトの名無しさん2015/07/07(火) 08:30:37.69ID:6KFd5cV4
Rustは低レベルな世界に関数型の表現力と安全性を持ち込もうとしている言語。
最初はOCamlで開発されていたからか、letとかOptionとかML系の匂いはする。

ただし簡潔さよりもゼロオーバーヘッドを優先しているから、冗長な表記が多々含まれる。
あと型推論は関数定義内だけに適用されるから、エラーメッセージが見当外れの場所を指さない一方、
borrow checkerのエラーはすごく把握しづらい。impl書いている時は特に。
自分がいかにGCに依存し、リソース管理を怠っていたかをこれでもかという程思い知らせてくる言語。
0838デフォルトの名無しさん2015/07/07(火) 08:31:10.23ID:bP16dll8
Rustなんて放り投げてATSやろうぜ!
0839デフォルトの名無しさん2015/07/07(火) 11:38:06.78ID:ZG49EUnh
これが超えちゃいけないラインってやつか
トランポリンとかモナドとかよりもっと抽象度高い系の片鱗を味わったぜ
0840デフォルトの名無しさん2015/07/07(火) 12:46:53.46ID:KLvjH7rL
岡部健・・・・・・。
0841デフォルトの名無しさん2015/07/07(火) 15:14:42.99ID:kS7BAnfS
>>838
岡部究(master_q)さん、暇なんですか?
0842デフォルトの名無しさん2015/07/07(火) 15:31:19.79ID:AZjd+yQY
ParsecとTrifectaってどう違うの?
0843デフォルトの名無しさん2015/07/07(火) 15:36:54.07ID:kS7BAnfS
>>842
Parsec の改良実装が Trifecta だそうです(TwitterのTL調べ)
0844デフォルトの名無しさん2015/07/07(火) 16:41:16.20ID:kvoehb1f
まさかUCLA卒の情報技術者を自称する岡部が、
メモリを食いつぶしてることの裏を取ってないわけねーだろ。
これには何か事情があるんだろう。
0845デフォルトの名無しさん2015/07/07(火) 16:44:08.49ID:kvoehb1f
まとめ:
岡部「破壊的代入を使わないクリックカウンターやお絵かきロジック(マウスのドラッグ)はFRP(自称)でなければ書けない」
→OCamlでもHaskellでも瞬殺
→岡部「再帰でメモリリーク(※スタックオーバーフローの意)する」
→末尾再帰なのでスタックオーバーフローしないし、実際のメモリ消費量も増えていない。
 岡部の示した「証拠画面」はメモリ不足ではなくプロセスを強制終了しただけ。
0846デフォルトの名無しさん2015/07/07(火) 16:57:06.07ID:AzQt5h10
マジで末尾再帰の最適化を知らなかったのか、kenokabe独自定義で違う意味なのか、どっちなんだ?
前者だとちょっとガッカリ…
0847デフォルトの名無しさん2015/07/07(火) 17:57:25.43ID:T57Vd7z3
メモリリークはバズワードであってだね・・・・
0848デフォルトの名無しさん2015/07/07(火) 18:14:46.72ID:50EUtPEU
kenokabeさんはもう許されていいとおもう
0849デフォルトの名無しさん2015/07/07(火) 18:17:56.32ID:Ra6qpxUV
Haskellは強制されても習得できない難しい言語だからこそ非人道的事案は少ない
それに比べて関数型という安易な言葉に苦しめられる人は多い
0850デフォルトの名無しさん2015/07/07(火) 20:57:42.46ID:strljqHr
どこかのスレでツリートラバースするのに再帰を使うのは良くないマナーと書いたら、
末尾再帰と言われたのだが。
0851デフォルトの名無しさん2015/07/08(水) 00:23:41.84ID:D8OEoYJf
>> 850
なぜ良くないの?
0852デフォルトの名無しさん2015/07/08(水) 00:43:21.45ID:lu3S4Qgm
>>>845
OCaml版はloop_at_exit使ってるのがダメと指摘されますた><
Graphics.wait_next_eventかGraphics_js.loop使ってください
0853デフォルトの名無しさん2015/07/08(水) 01:57:29.30ID:T1Ir4r2m
>>845
末尾再帰はあのコード例では関係なくて、イベントハンドラを経由したtrampolineになってるのでスタックオーバーフローしない、が正しそう。
0854デフォルトの名無しさん2015/07/08(水) 03:26:31.55ID:gcJIUX06
>>851
末尾再帰の最適化がかからない言語は使うべきではないともレスがあったな。
0855デフォルトの名無しさん2015/07/08(水) 05:37:16.57ID:D8OEoYJf
>> 854
よく分かりませんが、ところで、あなたにレスを見て気になって、調べて初めて知りました。
Haskellって末尾再帰の最適化って無いんだね。
ずっと勘違いしてた。気付かせてくれてありがとう。
0856デフォルトの名無しさん2015/07/08(水) 06:38:51.11ID:k4MH4D3R
>>855
>Haskellって末尾再帰の最適化って無いんだね

TCOが無いんじゃなくて、あくまでサンクの問題。
0857デフォルトの名無しさん2015/07/08(水) 07:15:31.29ID:asOwE27P
parsecとtrifectaは比較するようなものじゃないよ
0858デフォルトの名無しさん2015/07/08(水) 08:22:34.09ID:SmYj13jC
>>857
kwsk
0859デフォルトの名無しさん2015/07/08(水) 08:29:06.72ID:gcJIUX06
>>855
そもそも最適化が無い言語とはC言語のことで、Cは使うなHaskellを使えと言う話だったのだが。
0860デフォルトの名無しさん2015/07/08(水) 08:53:04.13ID:Hcg+sLDh
Haskellでサンクをインライン展開する最適化ってできるんじゃねえの
サンクが末尾にあったらTCOと同じだろ
0861デフォルトの名無しさん2015/07/08(水) 09:03:37.61ID:k4MH4D3R
>>860
できる。ghcなら-O2つければいい。
0862デフォルトの名無しさん2015/07/08(水) 09:44:23.49ID:gcJIUX06
そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので、インストラクションに
関しては大して違いが無いのだが。

どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す
傾向が強い。
0863デフォルトの名無しさん2015/07/08(水) 10:56:59.54ID:k4MH4D3R
そりゃTCO効いた後なら違いは殆どなくなるにきまってる。
0864デフォルトの名無しさん2015/07/08(水) 11:02:57.48ID:Mh0VppoT
「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので」

はあ???
0865デフォルトの名無しさん2015/07/08(水) 11:10:43.42ID:+0ZOrsx3
>>863
「TCO効いた後なら」同じだが、>>862 は「Cの関数呼び出し」と言ってるから
Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。
0866デフォルトの名無しさん2015/07/08(水) 11:28:35.90ID:k4MH4D3R
>>865
まさかスタック積むことすらわかってないとかなんかね?
0867デフォルトの名無しさん2015/07/08(水) 15:11:37.94ID:TEEbED7E
久しぶりにきたら荒れてるな

Haskellは破壊的代入をしようとすると面倒なのがつらい。

巨大な1次元配列の任意の場所を参照しながら大量に書き換える処理とか
純粋性を保ったままやろうとすると凄いことになる。
*例えば画像データの一部に別の画像をmixするとか
0868デフォルトの名無しさん2015/07/08(水) 16:24:24.26ID:Eo9ZYfU/
>>866
スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す
関数ならスタックは積む必要が無い。
再帰してるんだから。

ハスケラはどうも自分は天才で自分以外は全員馬鹿と思い込む傾向がある。
0869デフォルトの名無しさん2015/07/08(水) 16:25:04.00ID:Fj3AV/LF
相変わらず殺伐としている。
いつものマウンティング合戦。
0870デフォルトの名無しさん2015/07/08(水) 16:26:57.55ID:Fj3AV/LF
多分、ハスケラではなくオカマラーだよ。
なぜかオカマちゃんが出没するのだ。
0871デフォルトの名無しさん2015/07/08(水) 16:51:49.63ID:TEEbED7E
ハスケラと一緒に仕事したい(自社製品を一緒につくりたい)けど
怖い人多そうで誘いづらい
0872デフォルトの名無しさん2015/07/08(水) 17:09:26.71ID:F0vddBGo
「Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。」
「まさかスタック積むことすらわかってないとかなんかね? 」

毎日こんなこと言われると思う。
0873デフォルトの名無しさん2015/07/08(水) 17:22:12.92ID:TEEbED7E
なにそれ怖い
製品完成する前に心折られそう
0874デフォルトの名無しさん2015/07/08(水) 17:24:08.22ID:g9xxt+x4
「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループはオフセットを指定してジャンプ程度の違いしかないので」 とか
「スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す関数ならスタックは積む必要が無い。再帰してるんだから。」とか
(しかもTCOの話をしてるのに)、本当にCも関数呼び出しもわかってない知ったかぶりがHaskellerを中傷してるだけ。
それ以上でもそれ以下でもない。
0875デフォルトの名無しさん2015/07/08(水) 17:29:09.36ID:TEEbED7E
穏やかなハスケラいないかな
簡単なプログラムができる程度の初心者でもいいんだけど

一緒に自社製品つくりたい
(ただし売上あるまで一緒に無給)
0876デフォルトの名無しさん2015/07/08(水) 17:33:01.82ID:3bDYKzqv
>>874
どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す
傾向が強い。
0877デフォルトの名無しさん2015/07/08(水) 17:34:43.10ID:3bDYKzqv
最後には「Javaの話ししてるのにJavascriptと勘違いしている」などと言い出しそうだな。
0878デフォルトの名無しさん2015/07/08(水) 17:37:24.50ID:ikFma15C
わかってないから馬鹿にされてるんじゃなくて、
わかってないのに自覚せず威張ってるから馬鹿にされてるんだが…。
そういう奴がいて、間違いを指摘すると逆ギレされる職場とか絶対嫌。
0879デフォルトの名無しさん2015/07/08(水) 17:39:55.04ID:coR9sNH7
末尾呼び出し最適化は再帰だけじゃないよ
0880デフォルトの名無しさん2015/07/08(水) 17:46:11.37ID:TEEbED7E
馬鹿にするのも逆ギレもよくないとおもう

そしてこのスレが荒れるのも彼の呪いじゃないかとおもう
もうそっとしておくのが一番いいとおもう
0881デフォルトの名無しさん2015/07/08(水) 17:48:42.74ID:3bDYKzqv
「Cは再帰の最適化が無いから使うべきではない、Haskell使え」と言う話に、
Cは再帰の最適化が必要ないのに何言ってんの?と答えた。
0882デフォルトの名無しさん2015/07/08(水) 17:54:30.07ID:3bDYKzqv
Haskellの最適化って他の言語では必要ないものでしょ。

「遅延呼び出しによって必要のない計算を無くせるスゴイ!」
他の言語では最初から必要ない計算はしないからそんな最適化は必要ない。

自らゴミを持ち込んで
「ゴミを減らせたスゴイ!Cはゴミを減らせないから使うべきでない!」
とか言い出すのがハスケラー。
0883デフォルトの名無しさん2015/07/08(水) 17:54:46.50ID:jdKxxZpi
いろいろと誤解している気がする
0884デフォルトの名無しさん2015/07/08(水) 18:02:40.05ID:7bDc6WAX
まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。

それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。
末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。
0885デフォルトの名無しさん2015/07/08(水) 18:11:09.96ID:LC6Y88mm
必死に藁人形作ってるだけだから構ったら駄目だよ
末尾再帰最適化を知ってて制御構文を知らないなんて
そんな支離滅裂な馬鹿を前提としてる時点で察しろと
0886デフォルトの名無しさん2015/07/08(水) 18:13:26.90ID:7bDc6WAX
で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。
(引数渡しにスタックを使うこともあるけど、そうでなくても)

(再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、
ただのジャンプ(と引数のセット)だけに最適化できる。
この最適化は関数型言語の処理系では普通は実装されている。
Cでも全くできないことはないと思うが、いろいろ面倒そうなので
やってるコンパイラは寡聞にして知らない。
0887デフォルトの名無しさん2015/07/08(水) 18:14:38.28ID:3bDYKzqv
>>884
変換する最適化という言い方が、ハスケラーっぽいなあ。
Cは積む必要のないものは積まないんだから。
スタックに何も積まなければループも関数呼び出しも大した違いは無い。

そういうわけでこれからは、最適化しないと使い物にならないHaskellと考えていただこう。
0888デフォルトの名無しさん2015/07/08(水) 18:14:42.05ID:7bDc6WAX
>>885 スマソ。何となくちゃんと説明しないと俺の気が済まなかった。
0889デフォルトの名無しさん2015/07/08(水) 18:17:33.59ID:7bDc6WAX
(末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。
戻り番地と、生きている変数と、レジスタに入りきらない引数。
0890デフォルトの名無しさん2015/07/08(水) 18:27:23.28ID:Fj3AV/LF
マウンティングする奴は、マウンティングすることが目的だから、生産性は
低い。学者さんに多いタイプ。アカハラ怖い。
0891デフォルトの名無しさん2015/07/08(水) 18:27:27.64ID:LC6Y88mm
>>887
????
Cもfastcallじゃない限り戻りアドレス積むよ
0892デフォルトの名無しさん2015/07/08(水) 18:28:15.90ID:LC6Y88mm
しまった同じやつだった…
0893デフォルトの名無しさん2015/07/08(水) 18:39:15.89ID:2M74HMLS
馬鹿とは議論するな。傍目にはどちらが馬鹿か判りにくい
0894デフォルトの名無しさん2015/07/08(水) 18:50:26.80ID:7bDc6WAX
本当に混乱してる人もいるかもしれないし、説明のまとめだけ…

884 :デフォルトの名無しさん:2015/07/08(水) 18:02:40.05 ID:7bDc6WAX
まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。

それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。
末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。

886 :デフォルトの名無しさん:2015/07/08(水) 18:13:26.90 ID:7bDc6WAX
で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。
(引数渡しにスタックを使うこともあるけど、そうでなくても)

(再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、
ただのジャンプ(と引数のセット)だけに最適化できる。
この最適化は関数型言語の処理系では普通は実装されている。
Cでも全くできないことはないと思うが、いろいろ面倒そうなので
やってるコンパイラは寡聞にして知らない。

889 :デフォルトの名無しさん:2015/07/08(水) 18:17:33.59 ID:7bDc6WAX
(末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。
戻り番地と、生きている変数と、レジスタに入りきらない引数。 👀
Rock54: Caution(BBR-MD5:405b7f1af0f5a85b432d79fa769e9aeb)
0895デフォルトの名無しさん2015/07/08(水) 19:00:46.58ID:Hcg+sLDh
ループを無くす理由の一つはnullを無くしたかったから

nullは不要 → 初期化と代入の区別が必要 → 面倒だから代入も不要 → ループも不要
0896デフォルトの名無しさん2015/07/08(水) 19:03:01.21ID:7bDc6WAX
じゃあ、そもそもなんでループをわざわざ末尾再帰で書くの?という疑問は当然だけど、
ループで書くと破壊的代入が必要になるから、関数的に書くと自然に末尾再帰になる。

なので関数型プログラミングをするなら末尾再帰最適化は必須だし、
実際に(再帰以外の末尾呼び出しの最適化も)まともな処理系はみんな実装してる。
関数型言語では必須かつ簡単な最適化なので。
0897デフォルトの名無しさん2015/07/08(水) 19:04:06.48ID:7bDc6WAX
>>895 すまん前後した
0898デフォルトの名無しさん2015/07/08(水) 20:23:51.51ID:oVqSZ92L
>>886
vcは引数が全く同じ関数の末尾呼び出しをgotoにするよ。
0899デフォルトの名無しさん2015/07/08(水) 20:46:18.84ID:7bDc6WAX
>>898 「引数が全く同じ」ってことは、末尾再帰だよね?
末尾再帰は>>884にあるとおりGCCも(引数が違っても)最適化してる。
>>886は再帰以外の末尾呼び出しの話だった。
一続きだったんだが、独立して読むと明示されてないね。
>>894でまとめて読んでくれ。すまん。
0900デフォルトの名無しさん2015/07/08(水) 22:36:48.90ID:oVqSZ92L
>>899
いいや、tail callだよ。
0901デフォルトの名無しさん2015/07/08(水) 22:53:06.86ID:TEEbED7E
VSにHaskell用プラグインを組み込むプロジェクト進んでるのかな?

マジで早く使いたいんだけど
0902デフォルトの名無しさん2015/07/08(水) 23:02:56.60ID:zrPw7vNx
ここまでを簡単に解説すると、ハスケラはシッタカブラー。
0903デフォルトの名無しさん2015/07/08(水) 23:32:53.31ID:oVqSZ92L
>>899
ほらよ。

int foo(char *, int);
int bar(char *a, int b)
{
return foo(a + 10, b - 10);
}

_bar PROC ; COMDAT
mov eax, DWORD PTR _b$[esp-4]
add eax, -10 ; fffffff6H
mov DWORD PTR _b$[esp-4], eax
add DWORD PTR _a$[esp-4], 10 ; 0000000aH
jmp _foo
09048992015/07/09(木) 05:48:11.05ID:KPxfvpRW
>>903 おお! 「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。

逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから?
09058992015/07/09(木) 05:57:34.42ID:KPxfvpRW
いつのまにかGCCも末尾再帰じゃない末尾呼び出し最適化もやってた。引数の数や型が違っても。
Cでも需要があるのかな。

extern int foo(int);
int bar(char *a)
{
return foo(10);
}

bar:
.LFB0:
.cfi_startproc
movl $10, %edi
jmp foo
.cfi_endproc
09068992015/07/09(木) 06:13:19.89ID:KPxfvpRW
http://www.drdobbs.com/tackling-c-tail-calls/184401756
にGCCがTCOする条件が解説されてた。Cだとややこしいけど需要はあるらしい。
連投&スレ違い失礼しますた。
0907デフォルトの名無しさん2015/07/09(木) 06:35:27.16ID:OEKsJpEx
>>904
>「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。
再帰で値が同じならそれは無限再帰と呼ばれる。

>逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから?
引数の個数はcalleeではわからないから、面倒ではなく、出来ない。
0908デフォルトの名無しさん2015/07/09(木) 08:19:53.49ID:e+1UNYHr
>>907
>再帰で値が同じならそれは無限再帰と呼ばれる。
Cだと副作用でメモリの中身が変わってるかもしれない

>引数の個数はcalleeではわからないから、面倒ではなく、出来ない。
Cだと同じ関数の型の見え方がcallerとcalleeで違ったりするからね。
>>906みたく条件緩和できるがなかなかややこしい
0909デフォルトの名無しさん2015/07/09(木) 09:12:59.14ID:LXpNU/xq
>>901
VSの色んな機能を使えるなら欲しいけど、vimやemacsのプラグインと同じ事しか出来ないならいらん
0910デフォルトの名無しさん2015/07/09(木) 10:48:24.29ID:h1Dw9jX8
デバッガ観点で言うと末尾呼び出しの最適化されると
バックトレースが不正確になるのでやっかい
大規模な開発ではあえて無効にされることもあるよ
0911デフォルトの名無しさん2015/07/09(木) 10:56:32.05ID:sAbBvj66
>>909
使えないの・・・?(´・ω・`)

詳細しらないけどきっと使えるんじゃね?

VSのデバッガ使いたい
0912デフォルトの名無しさん2015/07/10(金) 07:10:09.65ID:0h1M+LeE
CSS使えない奴よりマシ
0913デフォルトの名無しさん2015/07/10(金) 10:31:36.54ID:j3g7NrlE
(A -> R) -> R は継続モナドになるわけだが、
R -> A や A -> R もモナドにできるの?
0914デフォルトの名無しさん2015/07/10(金) 11:04:46.48ID:XOUMSF+T
CSSいらない

>>913
m (r -> a)
m (a -> r)

モナドにしたったで
0915デフォルトの名無しさん2015/07/10(金) 12:28:35.80ID:j3g7NrlE
>>914
returnと>>=はそれぞれどうなるの?
0916デフォルトの名無しさん2015/07/10(金) 13:29:21.43ID:NSmmAGhS
>>915
つうか
(-> R A)と(-> A R)で普通に関数モナドな。

return = const
(>>=) f g = ¥x -> g ( f x ) x
0917デフォルトの名無しさん2015/07/10(金) 13:50:04.51ID:j3g7NrlE
(-> R A)はそれで分かったが、
(-> A R)のreturnと>>=は?
0918デフォルトの名無しさん2015/07/10(金) 16:23:11.40ID:NSmmAGhS
>>917
>(-> R A)はそれで分かったが、
>(-> A R)のreturnと>>=は?

あたま大丈夫?
0919デフォルトの名無しさん2015/07/10(金) 18:30:43.38ID:j3g7NrlE
は?
0920デフォルトの名無しさん2015/07/10(金) 19:04:13.42ID:l6c5ofse
たしかにあたま大丈夫じゃないリスクはゼロではないが、自動車より安全だ
そして、自動車より安全と発言した人間が狂っていると断言できる者はあまり多くない
0921デフォルトの名無しさん2015/07/10(金) 23:42:39.10ID:ucCSbhAH
>> 919
Rが具体的な型で、Aがなんでもいい型、って言いたいわけだね。

(A -> R) はモナドにならないよ。というか、Functor(共変関手)にならない。
代わりにContravariant(反変関手)になる。

newtype Op a b = Op { getOp :: b -> a }

instance Contravariant (Op a) where
contramap f g = Op (getOp g . f)

(以上contravariantパッケージより)


共変関手にならない理由は、このサイトがわかりやすい。
http://kinokkory.hatenablog.com/entry/20131203/p1
0922デフォルトの名無しさん2015/07/11(土) 09:25:20.24ID:6sFnysGr
>>921
ありがと。
M(A)がモナドになる条件を簡単に言えるのかな?
0923デフォルトの名無しさん2015/07/11(土) 09:30:00.73ID:S9PAD2xf
Emacs使いはflycheckが便利そう
https://github.com/flycheck/flycheck

既出ならスマソ
0924デフォルトの名無しさん2015/07/11(土) 09:42:11.42ID:Yc/lws0v
Cloud Haskellというものを知ったのですが
こういったノード間通信ライブラリを使ってる方がいたら
バリエーションや感触を教えてもらえないでしょうか
もしくはベタに書いたほうがいいでしょうか
0925デフォルトの名無しさん2015/07/11(土) 11:24:25.49ID:aYDDmLdu
単体のライブラリの質は人気に比例する気がする
でもフレームワークや統合環境は質より量でごまかせるから人気はどうでもいい
09269222015/07/11(土) 13:00:32.09ID:6sFnysGr
>>921
教えてもらったサイトの「正の位置・負の位置」で解決しました
0927デフォルトの名無しさん2015/07/11(土) 15:05:57.90ID:8xsgKabx
岡部健の新作が来たゾ〜
0928デフォルトの名無しさん2015/07/11(土) 15:12:01.82ID:V/wpM/3h
あの人はなんでブログの記事まで作って個人に対して反論してるんだろうね
反論記事って言い合いを面白がってみてる人以外には何の得もない気がするんだけどなあ
0929デフォルトの名無しさん2015/07/11(土) 16:20:10.41ID:obYDcaZK
Haskellは仕事で使える?
使えるとどうなる?教えて
0930デフォルトの名無しさん2015/07/11(土) 16:44:05.06ID:aYDDmLdu
もし仕事で使えると、無料で色々教えるのが勿体無くなる
0931デフォルトの名無しさん2015/07/11(土) 16:46:52.16ID:obYDcaZK
どういう時に使う?教えて詳しく
0932デフォルトの名無しさん2015/07/11(土) 20:42:56.70ID:/RrsVJlS
そりゃ自分のタスクを自動化するのに使うんだろと
0933デフォルトの名無しさん2015/07/11(土) 22:25:31.98ID:6sFnysGr
>>921
やっぱり自分はアホだった。全然分かっていなかった。
ファンクターにはなるがモナドにはならないものがあるはずだが、
その例が作れん
0934デフォルトの名無しさん2015/07/12(日) 00:46:11.12ID:KOjB2nQF
x^n+y^m=z^r 解は存在するか.だれも解けないといわれたビール予想
解けた方だけどうぞ
ttp://blog.livedoor.jp/superprojectx/archives/1030198512.html
0935デフォルトの名無しさん2015/07/12(日) 01:52:00.85ID:9fi2nz0K
HaskellのガベコレシステムってJavaのそれよりかなりショボいらしいじゃん
0936デフォルトの名無しさん2015/07/12(日) 06:13:49.33ID:/rMkRh/q
Haskell処理系のGCよく知らないけど、moving GCでも良いし
破壊的代入がなければwrite barrierもいらないから
Haskellのほうが簡単というだけじゃなくて?>ガベコレ
Javaは旧SunやIBMががんばった結果、細かい最適化はされてるだろうけど。
0937デフォルトの名無しさん2015/07/12(日) 08:26:42.75ID:zJqA9jr9
科学的根拠もなくただショボいという意見は参考にならない
もうJavaは無視してC++のようにGCショボいけど速いやつを参考にしよう
0938デフォルトの名無しさん2015/07/12(日) 11:00:37.13ID:AGKmbBWc
C++はGCショボいというよりない。。
ということでrustやろうぜ!
0939デフォルトの名無しさん2015/07/12(日) 11:10:50.31ID:s7w6GHZY
RustもGCないじゃん
0940デフォルトの名無しさん2015/07/12(日) 11:44:20.38ID:fsP2XOSV
>>939
RCあるぞ。
0941デフォルトの名無しさん2015/07/12(日) 12:48:25.98ID:KGquBeD3
Haskellでどんな作業を効率化できますか?
一例を教えて下さい
0942デフォルトの名無しさん2015/07/12(日) 12:52:34.01ID:fsP2XOSV
型のついた構文木の操作
0943デフォルトの名無しさん2015/07/12(日) 13:07:29.47ID:KGquBeD3
お前らがこんなことやってるより
ストリーミングサイト作ったCavetube管理人のほうがすごいんだよなぁ
0944デフォルトの名無しさん2015/07/12(日) 13:26:20.29ID:kel+atw2
誰々より誰々が凄いとかどーでもいいじゃん。

そんなの気にするより、そいつらのソース参考にするとかして
Haskell を楽しんだ方が何倍も有意義だよ。
0945デフォルトの名無しさん2015/07/12(日) 13:33:21.56ID:rAeLMId1
>>938
GCサポートは付いてるけどな。
RAIIで設計するとGCは遅くなるだけであまり意味ないから誰も使わないな。
0946デフォルトの名無しさん2015/07/12(日) 15:30:30.95ID:ryFHmMNk
Cavetubeってなんですか
0947デフォルトの名無しさん2015/07/12(日) 20:10:37.89ID:abu6RaU0
宣伝だろ
0948デフォルトの名無しさん2015/07/12(日) 20:16:28.54ID:bkprvq+c
Darcsはなぜgitに敗れたのか
0949デフォルトの名無しさん2015/07/12(日) 21:16:22.96ID:uwDfGRH4
HaskellはC言語で作ったライブラリをラップしてばかりだから、そもそもC言語製品に勝てるはずがなかった
0950デフォルトの名無しさん2015/07/12(日) 21:17:29.74ID:fsP2XOSV
それは普通に正しい使い方なんだが。
最初からCと競合するような言語じゃない。
0951デフォルトの名無しさん2015/07/12(日) 22:05:39.58ID:zJqA9jr9
Cと競合しないならバイトコードインタプリタで十分
コンパイラのゴリ押しが良くない
0952デフォルトの名無しさん2015/07/12(日) 22:06:55.79ID:x1Gu8TTq
既存の大量にあるCライブラリを利用しやすいかは大事なポイント
0953デフォルトの名無しさん2015/07/12(日) 22:18:58.68ID:fsP2XOSV
>>951
>Cと競合しないならバイトコードインタプリタで十分
>コンパイラのゴリ押しが良くない

意味がわからん。
LLVMコードを出力するのとコンパイラとの境界ってなによ
0954デフォルトの名無しさん2015/07/12(日) 22:24:58.59ID:s7w6GHZY
>>940
RCをGCというならC++にもGCあるだろ
0955デフォルトの名無しさん2015/07/12(日) 22:42:25.31ID:bkprvq+c
JavaとかCは、明らかに駄目な応用先でも上の意向等で使わざる得ないことあるけどHaskell とかlispはそういうこと滅多にないでしょ
0956デフォルトの名無しさん2015/07/12(日) 22:43:02.61ID:fsP2XOSV
>>954
その理解で何の問題もないと思うが。
RCがGCの主要実装方法のひとつだという点まで争いたいの?
0957デフォルトの名無しさん2015/07/12(日) 22:47:38.71ID:7yEOwALs
明確な目的や条件を設定せずに
やたら言語の優劣をつけたがる奴は
まともな開発経験も知識も能力もない
アホだと断定していいだろ。
0958デフォルトの名無しさん2015/07/12(日) 23:08:59.10ID:bkprvq+c
JavaやCとHaskell の単純な比較はできない
0959デフォルトの名無しさん2015/07/12(日) 23:48:11.69ID:s7w6GHZY
>>956
>>938 がC++はGCないからRustやろうぜとか言ってたんですよ
0960デフォルトの名無しさん2015/07/12(日) 23:48:45.86ID:zJqA9jr9
>>953
バイトコードを外部に出力する機能があったら仕様変更の影響が外部に伝播するから
その機能が無くても十分なら無い方が良いってこと
0961デフォルトの名無しさん2015/07/12(日) 23:53:56.51ID:fsP2XOSV
>>959
なるほど。

Rustのリージョナルポインタによるメモリ管理を
GCと間違えたんだろうな。
0962デフォルトの名無しさん2015/07/13(月) 00:22:31.58ID:FwNm1COs
Java ビジネス
C 組み込み
こういう風になっています。

富豪プログラミングが出来る所でCを使う必要性はあまり無い。
0963デフォルトの名無しさん2015/07/13(月) 00:58:02.40ID:QeuWC4Dg
>>961
いやrustにGCがないのは知ってる
0964デフォルトの名無しさん2015/07/13(月) 02:59:06.50ID:6i7dJOia
Rustなんて放り投げてATSやろうぜ!
0965デフォルトの名無しさん2015/07/13(月) 07:50:41.60ID:Ml9NNXKo
>>963
だからRCあるだろうが!
0966デフォルトの名無しさん2015/07/13(月) 08:16:40.56ID:5ZThykAi
毛はキータで相変わらず行間が読めないから、
RSSじゃなくて毛自身がコメ書いてる事を自分でバラす事になるんだな(笑)
0967デフォルトの名無しさん2015/07/13(月) 10:09:26.25ID:gqfr1aBw
Haskell流行って長いけどなんか実用になるような成果でた?
0968デフォルトの名無しさん2015/07/13(月) 10:57:00.94ID:cCxFevQ1
型のついてない成果を型のついた成果に翻訳できる
右から左に流すだけの虚業のように見えるのは仕方ない
0969デフォルトの名無しさん2015/07/13(月) 11:18:47.64ID:Ml9NNXKo
普段から業務に使ってる人間からすると意味不明な問いだ。
0970デフォルトの名無しさん2015/07/13(月) 11:35:14.43ID:UsYUluT9
「プログラム」の何たるかを
丸っきり分かってない一部のバカにとっては、
「一般ユーザが利用可能なパッケージソフト」だけが
「実用的な成果物」なんだろ。
0971デフォルトの名無しさん2015/07/13(月) 12:24:32.84ID:O7974LG1
Haskell がパッケージソフトの作成に向いていないのは何故?
0972デフォルトの名無しさん2015/07/13(月) 13:38:57.82ID:tAtIl5MT
Javaなんて何のメリットもないのに使わざる得ない時があるのが謎
0973デフォルトの名無しさん2015/07/13(月) 13:40:49.84ID:cCxFevQ1
exeの作成は問題ないがdllの作成に向いているのはCしかない
C++でさえdllの作成に向いていない
0974デフォルトの名無しさん2015/07/13(月) 15:07:15.86ID:6ctAAsGS
エンタープライズ系のアプリケーションでは最適解のひとつだから
仕方がない。
>>962 のとおり。
0975デフォルトの名無しさん2015/07/13(月) 18:30:29.23ID:htwOfG4r
C は実用というよりは、もう教養の部類だからね‥
C がわからないようでは、そいつの言うことは信用できない
http://builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
0976デフォルトの名無しさん2015/07/13(月) 19:05:07.18ID:xmoiVj3U
>>538
特定言語を知らん事を根拠にした
レッテリングにはあんまり賛同できないな。
0977デフォルトの名無しさん2015/07/13(月) 19:27:16.94ID:9wI4712X
windows7でhaskellplatform使ってるんですが、
Data.HashTableが入ってないようなので
cabal install hashtablesして、成功したのですが
未だにimport Data.HashTableで失敗します。
何がいけないのでしょうか?
0978デフォルトの名無しさん2015/07/13(月) 19:50:15.17ID:Ml9NNXKo
>>977
>Data.HashTable

Data.HashTableならbaseパッケージに入ってるんで、
hashtables要らないよ。

hashtables使うならData.HashTable.ST.Basicとか
Data.HashTable.ST.Cuckooをimportしないと。

多分どこかでなんか勘違いしてると思う。
0979デフォルトの名無しさん2015/07/13(月) 19:56:02.53ID:Ml9NNXKo
って、base-4.8からData.Hashtableなくなったのか〜
hashtables入れて import Data.HashTabl.IO でいいんじゃないかな。
0980デフォルトの名無しさん2015/07/13(月) 20:11:29.72ID:Ml9NNXKo
いちおうミニマルなサンプル

{-# LANGUAGE ScopedTypeVariables #-}
module Main where
import Data.HashTable.IO as H

type HashTable k v = H.CuckooHashTable k v

main = do
 (h::HashTable Int String) <- fromList [(1,"tata"),(2,"titi"),(3,"toto")]
 insert h 4 "tete"
 l <- toList h
 print l
0981デフォルトの名無しさん2015/07/13(月) 21:15:03.79ID:6helnrAX
ありがとうございます!
動作確認まだ出来てませんが、何とか先に進めそうです!
0982デフォルトの名無しさん2015/07/14(火) 14:33:35.00ID:d1S9qbgP
reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。

ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。

関数型の機械語なんて存在しない。

ここ、重要ね。反論はないと思うけど
0983デフォルトの名無しさん2015/07/14(火) 14:35:07.84ID:Bu3+R9wf
>>982
だからなに?
0984デフォルトの名無しさん2015/07/14(火) 15:11:21.95ID:GNUjvMWE
言ってみたかっただけ
0985デフォルトの名無しさん2015/07/14(火) 15:22:11.58ID:RRB/2bWF
>>982
関数型プログラマならBackusのCan programming be liberated from the von Neumann style?くらい読んでるわよ!
バカにしないでくれる!?
0986デフォルトの名無しさん2015/07/14(火) 15:26:34.91ID:lfdsryMV
極限まで高めた並列性が最高性能を引き出す・・・Haskellで書かれたプログラミンは・・神!
一万を超えるメニーコアが・・・Haskellは・・・神!
などと宣伝しすぎたから言われるんじゃないの。

結局速くなってないし。
0987デフォルトの名無しさん2015/07/14(火) 15:57:28.35ID:krmtTpmZ
宣伝には金がかかる
その金を汚いと思うかどうかは自由だが少なくとも金をかけてないやつは潔白だろ
関係ないやつを巻き込むなよ
0988デフォルトの名無しさん2015/07/14(火) 16:16:14.81ID:lfdsryMV
速くなってない・・・騙された・・・Haskell死ね!

と思う人がいても不思議じゃないだろ。

宣伝しすぎたんだよ。
0989デフォルトの名無しさん2015/07/14(火) 16:18:10.13ID:Bu3+R9wf
そんなに宣伝されてたの?
0990デフォルトの名無しさん2015/07/14(火) 16:44:47.28ID:lfdsryMV
そうだねえ。
チラシお断りと貼ってあるのに、ドンドン入れていく感じだね。
Haskellの宣伝がひどいので、コメント欄を無くしたブログも多かったんだよ。

そこまで宣伝したのに、宣伝されたことが全然実現されていないからね。
宣伝では5億並列で一ナノ秒以下を実現とか平気で言ってたからね。
もともと無理だったんだよ。
0991デフォルトの名無しさん2015/07/14(火) 17:50:31.44ID:Bu3+R9wf
>>990
どこの世界のお話ですか? 君の中の平行世界?
0992デフォルトの名無しさん2015/07/14(火) 18:47:54.12ID:JhU5Z9W0
>>982
>reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。
>ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。
>関数型の機械語なんて存在しない。
>ここ、重要ね。反論はないと思うけど

データフローマシンのような非ノイマン型アーキテクチャとか長年試作されてきたし
最近もReduceronはじめFPGAでグラフ書換プロセッサが実装されてるわけだが、
なにを根拠に「存在しない」とか言ってるのこのひとは?
0993デフォルトの名無しさん2015/07/14(火) 19:33:26.76ID:X8vX3uS6
次スレ

http://peace.2ch.net/test/read.cgi/tech/1436869629/
0994デフォルトの名無しさん 転載ダメ©2ch.net2015/07/14(火) 19:48:07.17ID:V8pOZFXs
次スレは当スレの約17時間後に立った下記重複スレを、実質Part29として活用しましょう。
当スレのレス数が1000になるまでは当スレを、それ以後は下記スレをご利用ください。
>>993のスレは(残っていれば)実質Part30として使います。

(実質Part29)
関数型プログラミング言語Haskell Part28 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1428597032/
0995デフォルトの名無しさん2015/07/14(火) 20:33:29.57ID:9t3W2eIV
HaskellとErlangの並列性能のベンチマークあったけどボロ負けでしたよ
https://github.com/worksap-ate/demo/blob/master/Cloud-Haskell.md
0996デフォルトの名無しさん2015/07/15(水) 00:18:57.00ID:jeRkgPlX
趣味でしか触ってなくて、python をやってから haskell に来たのでそれはもう僕からしたら haskell は素敵に速いのです
0997デフォルトの名無しさん2015/07/15(水) 00:51:31.43ID:HWtOn7Kk
オブジェクト指向
アクターモデル
インターネット
圏論
集合論

非ノイマン型はどれですか?
全部ですか?
0998デフォルトの名無しさん2015/07/15(水) 01:10:17.43ID:x7KlsBjr
>>997
そもそもそれらのどこにコンピュータ・アーキテクチャが
含まれているのか教えてくれ。
0999デフォルトの名無しさん2015/07/15(水) 04:12:42.40ID:WlnCwIoX
いまだ役たたず
1000デフォルトの名無しさん2015/07/15(水) 04:18:56.45ID:meQVGR7r
>>1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。