関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/10/10(日) 19:34:34ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
2chの仕様により、行頭の半角スペースは表示されません。
コードをインデントしたいときは、代わりに?または全角スペースを使うことができます。
0002デフォルトの名無しさん
2010/10/10(日) 19:37:23, ‐' ´ ``‐、 / ̄:三}
. /,. -─‐- 、. ヽ / ,.=j
_,.:_'______ヽ、 .! ./ _,ノ
`‐、{ へ '゙⌒ `!~ヽ. ! /{. /
`! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ そんなことよりDelphiしようぜ!
. {.l '⌒ ゙ 6',! / :::::::::::::::/ __
. 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
. ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ
,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 /
/ / :::::::::::::::: ; '´ /´\ / r'\
. i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
{ {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \
. ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: /
0003デフォルトの名無しさん
2010/10/10(日) 19:37:56・関数型言語Part5
ttp://pc12.2ch.net/test/read.cgi/tech/1252470706/
・【数学者】Haskellはクソ言語【オナニー】
ttp://pc11.2ch.net/test/read.cgi/tech/1128011645/
・純粋関数型言語Concurent Clean
ttp://pc11.2ch.net/test/read.cgi/tech/1075629340/
・関数型言語ML (SML, OCaml, etc.), Part 6
ttp://pc11.2ch.net/test/read.cgi/tech/1245017721/
・Lisp Scheme Part30
ttp://pc12.2ch.net/test/read.cgi/tech/1270897776/
・【入門】Common Lisp その7【質問よろず】
ttp://pc12.2ch.net/test/read.cgi/tech/1270370267/
・Emacs Lisp 3
ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/
・【Lisp】プログラミング言語 Clojure【JVM】
ttp://pc12.2ch.net/test/read.cgi/tech/1255533519/
・【.NET】F#について語れ【OCAML】
ttp://pc12.2ch.net/test/read.cgi/tech/1186030985/
0004デフォルトの名無しさん
2010/10/10(日) 19:38:17・Introduction to Functional Programming Using Haskell (2nd ed.)
ttp://www.amazon.co.jp/exec/obidos/ASIN/0134843460/
・Haskell: The Craft of Functional Programming
ttp://www.amazon.co.jp/exec/obidos/ASIN/0201342758/
・The Fun of Programming
ttp://www.amazon.co.jp/exec/obidos/ASIN/0333992857/
・The Haskell School of Expression: Learning Functional Programming Through Multimedia
ttp://www.amazon.co.jp/exec/obidos/ASIN/0521644089/
・入門Haskell
ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623/
・ふつうのHaskellプログラミング
ttp://item.rakuten.co.jp/book/4052963/
・Programming in Haskell
ttp://www.amazon.co.jp/exec/obidos/ASIN/0521692695/
・Real World Haskell
ttp://www.amazon.co.jp/exec/obidos/ASIN/0596514980
・関数プログラミングの楽しみ
ttp://www.amazon.co.jp/exec/obidos/ASIN/4274068056
0005デフォルトの名無しさん
2010/10/10(日) 19:43:18ttp://www.haskell.org/hoogle/
0006デフォルトの名無しさん
2010/10/10(日) 19:45:440007デフォルトの名無しさん
2010/10/10(日) 19:46:09ttp://learnyouahaskell.com/
Real World Haskell
ttp://book.realworldhaskell.org/read/
Tutorial From HaskellWiki
ttp://www.haskell.org/haskellwiki/Tutorials
0008デフォルトの名無しさん
2010/10/10(日) 20:06:04, ‐' ´ ``‐、 / ̄:三}
. /,. -─‐- 、. ヽ / ,.=j
_,.:_'______ヽ、 .! ./ _,ノ
`‐、{ へ '゙⌒ `!~ヽ. ! /{. /
`! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ そんなことよりC#しようぜ!
. {.l '⌒ ゙ 6',! / :::::::::::::::/ __
. 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
. ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ
,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 /
/ / :::::::::::::::: ; '´ /´\ / r'\
. i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
{ {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \
. ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: /
0009デフォルトの名無しさん
2010/10/12(火) 17:54:160010デフォルトの名無しさん
2010/10/12(火) 20:16:24調子こくと自分でも何やってるのか分かんなくなるから
俺は、最近は関数を中置で使うことが多くなってる
こっちも、調子こくとエディタの編集画面かうざくなるが
a `fmap` b
0011デフォルトの名無しさん
2010/10/12(火) 20:27:19f <$> a <*> bを(| f a b |)と書くとか
ただしエラーメッセージが解読不能になる諸刃の刃
0012デフォルトの名無しさん
2010/10/13(水) 01:19:59そんなのあるんだ。
>>9じゃないけど、勉強になった。
サンクス。
0013デフォルトの名無しさん
2010/10/15(金) 09:00:270014デフォルトの名無しさん
2010/10/15(金) 09:08:210015Perl忍者 ◆M5ZWRnXOj6
2010/10/16(土) 16:44:43終了〜
0016デフォルトの名無しさん
2010/10/16(土) 21:59:420017デフォルトの名無しさん
2010/10/17(日) 12:52:460018デフォルトの名無しさん
2010/10/18(月) 12:46:53俺もちょっと前から少しずつ読んでる
15ページ目でいきなり躓いてるがな
0019デフォルトの名無しさん
2010/10/18(月) 12:52:49Plugging a Space Leak with an Arrow
Arrow 以前の実装で起きてたスペースリークを
Arrow で解決した話が詳細に書かれている
0020まつもとひろゆき
2010/10/18(月) 17:07:350021デフォルトの名無しさん
2010/10/18(月) 17:54:48IP抜きました
本人確認
0022デフォルトの名無しさん
2010/10/18(月) 18:10:330023デフォルトの名無しさん
2010/10/18(月) 20:16:560024デフォルトの名無しさん
2010/10/18(月) 21:13:330025Perl忍者 ◆M5ZWRnXOj6
2010/10/18(月) 23:56:0120〜24だけをみると
まるでHaskell板の面影すらありません
そう思いますよね???
0026デフォルトの名無しさん
2010/10/19(火) 00:10:480027Perl忍者 ◆M5ZWRnXOj6
2010/10/19(火) 09:33:280028Perl忍者 ◆M5ZWRnXOj6
2010/10/19(火) 09:38:45くそみてええなのは含まれません!
0029デフォルトの名無しさん
2010/10/19(火) 10:06:10モダンってどんな書き方?
0030デフォルトの名無しさん
2010/10/19(火) 10:11:390031デフォルトの名無しさん
2010/10/19(火) 10:12:30有益な情報を一切ださない奴。
0032デフォルトの名無しさん
2010/10/20(水) 10:44:140033Perl忍者 ◆M5ZWRnXOj6
2010/10/20(水) 11:31:10haskellじゃねーぞ
プログラマと1回 FPSをやってみたいんだけど
お前らができるFPSをいってくれ 俺はそれをダウンロードしてスタンバイするので
0034デフォルトの名無しさん
2010/10/20(水) 12:01:130035Perl忍者 ◆M5ZWRnXOj6
2010/10/20(水) 12:11:30早くFPSのゲーム名いえよ
0036デフォルトの名無しさん
2010/10/20(水) 12:18:450037Perl忍者 ◆M5ZWRnXOj6
2010/10/20(水) 12:24:26はやくURLはれ
0038デフォルトの名無しさん
2010/10/20(水) 12:30:490039デフォルトの名無しさん
2010/10/20(水) 18:59:530040デフォルトの名無しさん
2010/10/20(水) 20:34:010041デフォルトの名無しさん
2010/10/20(水) 20:50:230042デフォルトの名無しさん
2010/10/20(水) 21:37:090043デフォルトの名無しさん
2010/10/20(水) 22:52:52http://blog.livedoor.jp/perlninja/ これ何?
0044Perl忍者 ◆M5ZWRnXOj6
2010/10/20(水) 23:00:21俺の偽だろ!!!
ガッチムッチの思い切り!ガッチムチ羽ばたいて!飛んで飛んでアソコへ!レディゴーレディゴー!レディゴー!(ガチガチ! oh〜ガチムチー!!!
0045デフォルトの名無しさん
2010/10/20(水) 23:15:35使えるのなら、小粒でいいから何かテクニックでも紹介していけ
使えないのなら、邪魔だから騒がしくするな
0046デフォルトの名無しさん
2010/10/21(木) 00:00:45小難しいモナドでつまづいてます。
皆さん何を勉強してモナドが何者か納得できましたか?
とりあえずWadlerの論文みつけたので、
これ読めばなんかつかめるかなとは期待してるんですが、英文だし効率悪い。
0047デフォルトの名無しさん
2010/10/21(木) 00:12:11Haskellを使うためにモナドを勉強するならこれで十分だと思います。
世界で一番か二番くらいにやさしい「モナド入門」
http://d.hatena.ne.jp/m-hiyama/20060419/1145432492
0048デフォルトの名無しさん
2010/10/21(木) 00:27:28おすすめのページじっくり読んでみます。
まずはお礼まで。
0049デフォルトの名無しさん
2010/10/21(木) 07:56:25[モナド] を理解することと、
[モナドで副作用を閉じ込める仕組み(IO モナド)] を理解することは別だからね。
[モナド] と [モナドの演算] というのは、有理数と割り算みたいなもの。
[有理数]
1. 整数 x を □/1 でくるめば(x/1)有理数になる(整数を有理数に変換)
2. 有理数どうしならば割り算(÷)という特別な演算ができる
3. 割り算した結果できたものもまた有理数だ
4. 有理数には特別な性質がある(4/8 も 2/4 も既約分数にすれば同じとか、ゼロでは割れないとか)
[モナド]
1. 何でもいいが何か x を return □ でくるめば(return x)モナドになる(何かをモナドに変換)
2. モナドどうしならバインド(>>= や >>)という特別な演算ができる
3. バインドした結果できたものもまたモナドだ
4. モナドには特別な性質がある(モナド則とよばれるルール)
モナドとは本質的に何か探るのではなく、こういうことができるものにモナドと名前が付いてる、
という方向からモナドを理解するやりかたもあるよ。
どちらも 1. と 3. は何も特別なことはなく、各々の特徴は 2. と 4. に現れている。
だから 2. と 4. がどのようなものかを知れば、モナドが見えてくるよ。
0050Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 08:08:020051Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 08:11:150052デフォルトの名無しさん
2010/10/21(木) 09:07:49問題は、隠蔽するやり方が何通りもあったために、かえって偶有的属性が増えてしまった
ということだと思います。
005349
2010/10/21(木) 09:09:35すまん、[モナド] の 2. は違うな
バインドはモナドどうしの演算じゃなかった
[モナド] と [そのモナドで包んでるものに対する関数] との演算だったよ
あと、[有理数] の 1. は別に整数でなくてもいい
複素数でもその他でもいいが、整数が一番簡単だったから
0054デフォルトの名無しさん
2010/10/21(木) 12:54:25>モナドの目的は、本来の目的を情報隠蔽することだと思います。
どういうこと?
たとえば、ある代数データ型をある目的で使いたいが、その目的を隠したい、
そういう時にその代数データ型をモナドにすることを考えてみるといい、
ということですか?
0055デフォルトの名無しさん
2010/10/21(木) 13:01:170056デフォルトの名無しさん
2010/10/21(木) 15:20:32しかし、つまらないという基準はただの主観だと思います。
0057デフォルトの名無しさん
2010/10/21(木) 15:34:43あなたはこの世界を五感と知性によって認識しているでしょう。
0058Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 23:44:59おもしろいの基準あがってるからしょうがねえんだよかす
0059デフォルトの名無しさん
2010/10/21(木) 23:47:18オブジェクト(≒集合の元)を「モナド」と呼んでる段階で眉に唾をつけたくなる.
0060Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 23:49:01てめえ
うちはイタチの真似してんだろこら
「人は己の知識や認識に頼り縛られ生きている…それを現実と呼んでな。しかし現実とはあいまいなものだ。それは幻かもしれない
お前もNARUTO好きか?
0061デフォルトの名無しさん
2010/10/22(金) 03:20:06仏教思想で答えただけなんだがな・・・
仏教では、世界とは八識(五感+意識+末那識+阿羅耶識)で物事を認識することによる主観の産物だっていうのが定説。
006249
2010/10/22(金) 07:32:55俺自身も書いた後でこの捉え方はどうかとちょっと疑問だった。
(いろいろ突っ込みどころはあるだろうし)
が、少なくともオブジェクト(≒集合の元)を「モナド」と呼んだつもりはないのだが。
[モナド] の 3. のところがマズったか。
小学校や中学校、高校で「割り算とは何ものか?」という本質は学ばず、
「割り算は**という演算だよ」とだけ教えられ、さっさと学習を進めたはず。
微分、積分、内積なども同じだと思う。
ちょっと前に Haskell 勉強しはじめた者も Haskell に関しては同じ立場だから、
「モナドは**という演算ができて、##という性質があるよ」
の**と##をまず調べたらどうかと言いたかった。
それはモナドの理解のほんの一部だけだけど、
それだけでも Haskell の学習を進めるのには十分だから。
0063Perl忍者 ◆M5ZWRnXOj6
2010/10/22(金) 07:38:550064デフォルトの名無しさん
2010/10/22(金) 08:09:18「1を return でくるめば(return 1)モナドになる」
「(Just x) と (Left y) (モナド同士)に特別な演算ができる」
って変でしょ?
(return 1)の属する型(IO Int なり Maybe Int なり)と演算 >>=, >>, return の組がモナド.
あなたの書き方だといつでもモナドの元同士に対する演算が定義されていると読めて,
データを型で区別してプログラムの質を高める,という考え方と真っ向から対立し
読者に混乱を引き起こす.
0065デフォルトの名無しさん
2010/10/22(金) 11:05:26これならここの住人にも理解できるんじゃないか。
0066デフォルトの名無しさん
2010/10/22(金) 11:57:35一度その型で始めたら途中変更は利きませんからね
って事ですかね
0067デフォルトの名無しさん
2010/10/22(金) 12:37:22と問われたら違うというほかない
006849
2010/10/22(金) 12:39:49演算はモナドどうしではなかったと >>53 で訂正したぞ
(>>=、>> の右辺はモナドじゃないから)
>>66
できるよ
[String] から [Int] に変更できるでしょ
0069デフォルトの名無しさん
2010/10/22(金) 12:40:300070デフォルトの名無しさん
2010/10/22(金) 12:43:54変な理屈だけ増やしてどうすんだろな
モナドを使わずに書いた場合と比べてみれば
少しはありがたみが分かる
0071デフォルトの名無しさん
2010/10/22(金) 12:51:54>初心者が具体例なしに理屈だけ聞いて分からないから困ってんのに
そんなこと一言も聞いてないが
逆に例ばかりで理屈が分からないとも聞いてないけどね
自分が知りたいんだと素直に言ったら?
0072デフォルトの名無しさん
2010/10/22(金) 13:02:520073デフォルトの名無しさん
2010/10/22(金) 13:38:550074デフォルトの名無しさん
2010/10/22(金) 13:48:10お釈迦さんバカにすんあ
0075デフォルトの名無しさん
2010/10/22(金) 14:46:430076デフォルトの名無しさん
2010/10/22(金) 17:21:280077デフォルトの名無しさん
2010/10/22(金) 19:53:05他人の主観に便乗するやつはゴミ
0078デフォルトの名無しさん
2010/10/22(金) 20:10:37という主観ですね
0079デフォルトの名無しさん
2010/10/22(金) 20:27:570080デフォルトの名無しさん
2010/10/22(金) 20:32:170081デフォルトの名無しさん
2010/10/22(金) 20:40:200082デフォルトの名無しさん
2010/10/22(金) 20:53:23そんな側面はありません
0083デフォルトの名無しさん
2010/10/22(金) 21:28:41今ほっとな話題は仏教だよ
0084Perl忍者 ◆M5ZWRnXOj6
2010/10/22(金) 23:22:49一瞬ここのスレみたら
仏教スレになってた
テラワロスwwwww
0085デフォルトの名無しさん
2010/10/23(土) 01:13:280086デフォルトの名無しさん
2010/10/23(土) 09:13:370087デフォルトの名無しさん
2010/10/24(日) 18:18:17Perl忍者!頼んだぞ!
0088デフォルトの名無しさん
2010/10/24(日) 18:56:06紀元前500年のインドはオカルト宗教であるバラモン教が力を持っていたが、
そのアンチテーゼとして釈迦の教えをまとめたのが仏教(上座部仏教)だ。
神に祈れば天国に行ける?バカをいうなw
仏陀は弟子にこういった、
小石を池に投げ込んで、浮かんでこい、浮かんでこい、と念じれば小石は浮かんでくるのか?
いや、浮かんできはしない。
念仏や祈祷や呪文を唱えたところで何も変わらんのだ。
そのくだらん映画を今すぐ取りやめろ。
0089デフォルトの名無しさん
2010/10/24(日) 19:02:31この大乗仏教というやつは仏陀の教えを経典主義的に極端な形で屁理屈をこね回して作られたオカルト要素たっぷりのゴミ宗教だ。
そう、どんな素晴らしい教えでも凡人にかき回されるとゴミに変貌するわけだ。
Haskellだって、凡人が大量に使うようになると当初の理想なんて失って優柔不断な言語になるに決まっている。
だからperl忍者とかいうザコはどうしてもHaskell触りたいなら博士号取ってからにしろ。
0090デフォルトの名無しさん
2010/10/24(日) 19:27:54世間が求めているのは便利なものだ。
大乗仏教は人々に支持された。
Haskellは?
0091デフォルトの名無しさん
2010/10/24(日) 19:29:250092デフォルトの名無しさん
2010/10/24(日) 19:52:170093デフォルトの名無しさん
2010/10/24(日) 20:33:13少なくとも嫌ってる人は少ないだろうな
大半は「好き」「はぁ?何それ」 のどちらかだろ
0094デフォルトの名無しさん
2010/10/24(日) 21:37:370095デフォルトの名無しさん
2010/10/25(月) 06:40:220096デフォルトの名無しさん
2010/10/25(月) 12:13:280097(信は力なり)Perl忍者 ◆M5ZWRnXOj6
2010/10/25(月) 23:27:04最後の行にPerl忍者とかかかれてもきずかないんですが
死ねよハゲ
0098デフォルトの名無しさん
2010/10/25(月) 23:59:22John Hughes が著わした次の論文を紹介する。
Generalising Monads to Arrow
モナドの利点も簡潔にまとめてあるから、
モナドって何の役に立つんだ? という人にも参考になる。
0099デフォルトの名無しさん
2010/10/26(火) 00:01:42論文のタイトルが間違ってた。
細かいことだが著者に失礼なので訂正させてほしい。
Generalising Monads to Arrows
0100デフォルトの名無しさん
2010/10/26(火) 13:39:101. Stateモナドを一回写経
2. loop :: Monad m => Int -> m a -> m a とか、when :: Monad m => Bool -> m a -> m aのような
『モナドをとってモナドを返す』関数をいろいろ作り、Stateモナド内では何が起きているのかを考える
3. 全部消してStateモナドを記憶を頼りに再実装
ってやればかなり理解できる。
Listモナドは、リスト内包表現をListモナドで表現するのを繰り返していれば、分かってくる。
Maybeモナドはその劣化版。
これらはすべて一本道の逐次計算あるいは逐次実行、すなわちモナドが抽象化しているものの具体例になるんだけど、
そこまで行く前に、StateモナドとListモナドを別々に理解して、いつでもモナドのインスタンスとして再実装できるようになるほうが、
数学者でなければ結局は早いと思う。
いずれ、Listモナドは量子ピタゴラススイッチなのだと理解できる日が来よう。
0101デフォルトの名無しさん
2010/10/26(火) 18:15:32>Maybeモナドはその劣化版
何となくだけど、ちょっとだけ引っかかる。
Monad クラスのインスタンスは全て等しく優劣無くモナドなんじゃないの?
何の視点で優劣を比べた結果 Maybeモナド が List モナドに劣ると考えたの?
■ このスレッドは過去ログ倉庫に格納されています