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

関数型プログラミング言語Haskell Part13

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/10/10(日) 19:34:34
haskell.org
ttp://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:18
Haskell API search Engine
ttp://www.haskell.org/hoogle/
0006デフォルトの名無しさん2010/10/10(日) 19:45:44
>>1
0007デフォルトの名無しさん2010/10/10(日) 19:46:09
Learn You a Haskell
ttp://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:16
fmapの代わりに<$>を覚えたよ!(o^∀^o)
0010デフォルトの名無しさん2010/10/12(火) 20:16:24
<$> くらいはいいけど、算術以外の中置演算子はほどほどにな
調子こくと自分でも何やってるのか分かんなくなるから

俺は、最近は関数を中置で使うことが多くなってる
こっちも、調子こくとエディタの編集画面かうざくなるが
a `fmap` b
0011デフォルトの名無しさん2010/10/12(火) 20:27:19
むしろshe(プリプロセッサ)を使って
f <$> a <*> bを(| f a b |)と書くとか

ただしエラーメッセージが解読不能になる諸刃の刃
0012デフォルトの名無しさん2010/10/13(水) 01:19:59
>>11

そんなのあるんだ。
>>9じゃないけど、勉強になった。
サンクス。
0013デフォルトの名無しさん2010/10/15(金) 09:00:27
公式のLLVMの切れたリンク、なんなの?
0014デフォルトの名無しさん2010/10/15(金) 09:08:21
なんなの、って、メンテ忘れじゃない?
0015Perl忍者 ◆M5ZWRnXOj6 2010/10/16(土) 16:44:43
ほんとこのクソスレのびねえな

終了〜
0016デフォルトの名無しさん2010/10/16(土) 21:59:42
vip de yaruo.
0017デフォルトの名無しさん2010/10/17(日) 12:52:46
Pearls of Functional Algorithm Designやっと届いたぜ。wktkしながら頁をめくるか
0018デフォルトの名無しさん2010/10/18(月) 12:46:53
>>17
俺もちょっと前から少しずつ読んでる
15ページ目でいきなり躓いてるがな
0019デフォルトの名無しさん2010/10/18(月) 12:52:49
FRP の Arrow による実装に興味がある者には下記の論文を勧める

Plugging a Space Leak with an Arrow

Arrow 以前の実装で起きてたスペースリークを
Arrow で解決した話が詳細に書かれている
0020まつもとひろゆき2010/10/18(月) 17:07:35
こんなゴミスレいらん。
0021デフォルトの名無しさん2010/10/18(月) 17:54:48
>>20
IP抜きました
本人確認
0022デフォルトの名無しさん2010/10/18(月) 18:10:33
>>21 つまらないよ
0023デフォルトの名無しさん2010/10/18(月) 20:16:56
>>20-22自作自演
0024デフォルトの名無しさん2010/10/18(月) 21:13:33
>>20-23自作自演な気がする。。。 
0025Perl忍者 ◆M5ZWRnXOj6 2010/10/18(月) 23:56:01
20~24はHaskell板にふさわしくない書き込みですね

20〜24だけをみると
まるでHaskell板の面影すらありません

そう思いますよね???
0026デフォルトの名無しさん2010/10/19(火) 00:10:48
itパスポートは どうなったよ??
0027Perl忍者 ◆M5ZWRnXOj6 2010/10/19(火) 09:33:28
JPA公認企業の20台後半〜50台くらいのやつが消滅したらPerlerの大半が消える
0028Perl忍者 ◆M5ZWRnXOj6 2010/10/19(火) 09:38:45
Perlerってモダンの書き方しってるやつな

くそみてええなのは含まれません!
0029デフォルトの名無しさん2010/10/19(火) 10:06:10
>>28
モダンってどんな書き方?
0030デフォルトの名無しさん2010/10/19(火) 10:11:39
クソコテにかまうな
0031デフォルトの名無しさん2010/10/19(火) 10:12:30
まさに糞コテだよな。
有益な情報を一切ださない奴。
0032デフォルトの名無しさん2010/10/20(水) 10:44:14
みんな喧嘩は辞めて!><
0033Perl忍者 ◆M5ZWRnXOj6 2010/10/20(水) 11:31:10
FPS勝負しないか?
haskellじゃねーぞ
プログラマと1回 FPSをやってみたいんだけど
お前らができるFPSをいってくれ 俺はそれをダウンロードしてスタンバイするので
0034デフォルトの名無しさん2010/10/20(水) 12:01:13
言っておくが俺はチートするぜ
0035Perl忍者 ◆M5ZWRnXOj6 2010/10/20(水) 12:11:30
チーとでもなんでもこい
早くFPSのゲーム名いえよ
0036デフォルトの名無しさん2010/10/20(水) 12:18:45
DOOM
0037Perl忍者 ◆M5ZWRnXOj6 2010/10/20(水) 12:24:26
doom知ってんぞ体験版?
はやくURLはれ
0038デフォルトの名無しさん2010/10/20(水) 12:30:49
馬鹿はテンション高いな
0039デフォルトの名無しさん2010/10/20(水) 18:59:53
FPSあげ
0040デフォルトの名無しさん2010/10/20(水) 20:34:01
FPSあげ あげ
0041デフォルトの名無しさん2010/10/20(水) 20:50:23
むしろFRP希望。
0042デフォルトの名無しさん2010/10/20(水) 21:37:09
FRPを使ったゲームを誰が最速で書けるか勝負しようぜ!
0043デフォルトの名無しさん2010/10/20(水) 22:52:52
>>37
http://blog.livedoor.jp/perlninja/ これ何?
0044Perl忍者 ◆M5ZWRnXOj6 2010/10/20(水) 23:00:21
>>43
俺の偽だろ!!!
ガッチムッチの思い切り!ガッチムチ羽ばたいて!飛んで飛んでアソコへ!レディゴーレディゴー!レディゴー!(ガチガチ! oh〜ガチムチー!!!
0045デフォルトの名無しさん2010/10/20(水) 23:15:35
ところで、Perl忍者は Haskell は使えるのか?
使えるのなら、小粒でいいから何かテクニックでも紹介していけ

使えないのなら、邪魔だから騒がしくするな
0046デフォルトの名無しさん2010/10/21(木) 00:00:45
ちょっと前にHaskell勉強しはじめた者ですが、
小難しいモナドでつまづいてます。
皆さん何を勉強してモナドが何者か納得できましたか?
とりあえずWadlerの論文みつけたので、
これ読めばなんかつかめるかなとは期待してるんですが、英文だし効率悪い。
0047デフォルトの名無しさん2010/10/21(木) 00:12:11
>>46
Haskellを使うためにモナドを勉強するならこれで十分だと思います。

世界で一番か二番くらいにやさしい「モナド入門」
http://d.hatena.ne.jp/m-hiyama/20060419/1145432492
0048デフォルトの名無しさん2010/10/21(木) 00:27:28
おお、さっそくありがとうございます。
おすすめのページじっくり読んでみます。
まずはお礼まで。
0049デフォルトの名無しさん2010/10/21(木) 07:56:25
>>46
[モナド] を理解することと、
[モナドで副作用を閉じ込める仕組み(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:02
本かわせんじゃねえよ作者
0051Perl忍者 ◆M5ZWRnXOj6 2010/10/21(木) 08:11:15
本買わせるんじゃねえよ著者
0052デフォルトの名無しさん2010/10/21(木) 09:07:49
モナドの目的は、本来の目的を情報隠蔽することだと思います。
問題は、隠蔽するやり方が何通りもあったために、かえって偶有的属性が増えてしまった
ということだと思います。
0053492010/10/21(木) 09:09:35
>>49
すまん、[モナド] の 2. は違うな
バインドはモナドどうしの演算じゃなかった
[モナド] と [そのモナドで包んでるものに対する関数] との演算だったよ

あと、[有理数] の 1. は別に整数でなくてもいい
複素数でもその他でもいいが、整数が一番簡単だったから
0054デフォルトの名無しさん2010/10/21(木) 12:54:25
>>52
>モナドの目的は、本来の目的を情報隠蔽することだと思います。

どういうこと?

たとえば、ある代数データ型をある目的で使いたいが、その目的を隠したい、
そういう時にその代数データ型をモナドにすることを考えてみるといい、
ということですか?
0055デフォルトの名無しさん2010/10/21(木) 13:01:17
>>52はつまらない冗談か、もしくは気が狂っているので無視していいよ
0056デフォルトの名無しさん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
>49
オブジェクト(≒集合の元)を「モナド」と呼んでる段階で眉に唾をつけたくなる.
0060Perl忍者 ◆M5ZWRnXOj6 2010/10/21(木) 23:49:01
>>57
てめえ
うちはイタチの真似してんだろこら

「人は己の知識や認識に頼り縛られ生きている…それを現実と呼んでな。しかし現実とはあいまいなものだ。それは幻かもしれない

お前もNARUTO好きか?
0061デフォルトの名無しさん2010/10/22(金) 03:20:06
>>60
仏教思想で答えただけなんだがな・・・
仏教では、世界とは八識(五感+意識+末那識+阿羅耶識)で物事を認識することによる主観の産物だっていうのが定説。
0062492010/10/22(金) 07:32:55
>>59
俺自身も書いた後でこの捉え方はどうかとちょっと疑問だった。
(いろいろ突っ込みどころはあるだろうし)

が、少なくともオブジェクト(≒集合の元)を「モナド」と呼んだつもりはないのだが。
[モナド] の 3. のところがマズったか。

小学校や中学校、高校で「割り算とは何ものか?」という本質は学ばず、
「割り算は**という演算だよ」とだけ教えられ、さっさと学習を進めたはず。
微分、積分、内積なども同じだと思う。

ちょっと前に Haskell 勉強しはじめた者も Haskell に関しては同じ立場だから、
「モナドは**という演算ができて、##という性質があるよ」
の**と##をまず調べたらどうかと言いたかった。
それはモナドの理解のほんの一部だけだけど、
それだけでも Haskell の学習を進めるのには十分だから。
0063Perl忍者 ◆M5ZWRnXOj6 2010/10/22(金) 07:38:55
仏教
0064デフォルトの名無しさん2010/10/22(金) 08:09:18
>62
「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
ですかね
と問われたら違うというほかない
0068492010/10/22(金) 12:39:49
>>64
演算はモナドどうしではなかったと >>53 で訂正したぞ
(>>=、>> の右辺はモナドじゃないから)


>>66
できるよ
[String] から [Int] に変更できるでしょ
0069デフォルトの名無しさん2010/10/22(金) 12:40:30
そうですか、違うんですか(´・ω・`)
0070デフォルトの名無しさん2010/10/22(金) 12:43:54
初心者が具体例なしに理屈だけ聞いて分からないから困ってんのに
変な理屈だけ増やしてどうすんだろな

モナドを使わずに書いた場合と比べてみれば
少しはありがたみが分かる
0071デフォルトの名無しさん2010/10/22(金) 12:51:54
>>70
>初心者が具体例なしに理屈だけ聞いて分からないから困ってんのに

そんなこと一言も聞いてないが
逆に例ばかりで理屈が分からないとも聞いてないけどね

自分が知りたいんだと素直に言ったら?
0072デフォルトの名無しさん2010/10/22(金) 13:02:52
世界は人の主観の産物なのだから本質は「無」なのだ、というわけ。
0073デフォルトの名無しさん2010/10/22(金) 13:38:55
いつからこのスレはこんな電波っぽくなったんですか?(´・ω・`)
0074デフォルトの名無しさん2010/10/22(金) 13:48:10
仏教を電波扱いするな。
お釈迦さんバカにすんあ
0075デフォルトの名無しさん2010/10/22(金) 14:46:43
猿が増えたから減らします
0076デフォルトの名無しさん2010/10/22(金) 17:21:28
電波ぽいって主観じゃん
0077デフォルトの名無しさん2010/10/22(金) 19:53:05
とりあえず主観は悪くないとしても
他人の主観に便乗するやつはゴミ
0078デフォルトの名無しさん2010/10/22(金) 20:10:37
>>77
という主観ですね
0079デフォルトの名無しさん2010/10/22(金) 20:27:57
スレの住人が総取っかえになったみたいだな。
0080デフォルトの名無しさん2010/10/22(金) 20:32:17
haskellは仏教に似ている
0081デフォルトの名無しさん2010/10/22(金) 20:40:20
ヘイ! ジョージ! 今日も情事に励んでるかい? HAHAHA
0082デフォルトの名無しさん2010/10/22(金) 20:53:23
>>66
そんな側面はありません
0083デフォルトの名無しさん2010/10/22(金) 21:28:41
その話題はもう完了してる

今ほっとな話題は仏教だよ
0084Perl忍者 ◆M5ZWRnXOj6 2010/10/22(金) 23:22:49
うけるwwwwwwww
一瞬ここのスレみたら

仏教スレになってた
テラワロスwwwww
0085デフォルトの名無しさん2010/10/23(土) 01:13:28
http://youtu.be/0aaJY_KeOsw
0086デフォルトの名無しさん2010/10/23(土) 09:13:37
バイアスがひどいな。政治の道具にされ始めとる。
0087デフォルトの名無しさん2010/10/24(日) 18:18:17
荒らしに対抗できるのは荒らし
Perl忍者!頼んだぞ!
0088デフォルトの名無しさん2010/10/24(日) 18:56:06
釈迦(=仏陀=目覚めた人)はむしろ幽霊とか超常現象とかオカルトを批判していた側の人間なんだがなw
紀元前500年のインドはオカルト宗教であるバラモン教が力を持っていたが、
そのアンチテーゼとして釈迦の教えをまとめたのが仏教(上座部仏教)だ。
神に祈れば天国に行ける?バカをいうなw
仏陀は弟子にこういった、
小石を池に投げ込んで、浮かんでこい、浮かんでこい、と念じれば小石は浮かんでくるのか?
いや、浮かんできはしない。
念仏や祈祷や呪文を唱えたところで何も変わらんのだ。
そのくだらん映画を今すぐ取りやめろ。
0089デフォルトの名無しさん2010/10/24(日) 19:02:31
今の日本で普及しているゴミのような仏教は釈迦が死んだ700年後の後世に作られた大乗仏教に由来する。
この大乗仏教というやつは仏陀の教えを経典主義的に極端な形で屁理屈をこね回して作られたオカルト要素たっぷりのゴミ宗教だ。
そう、どんな素晴らしい教えでも凡人にかき回されるとゴミに変貌するわけだ。
Haskellだって、凡人が大量に使うようになると当初の理想なんて失って優柔不断な言語になるに決まっている。
だからperl忍者とかいうザコはどうしてもHaskell触りたいなら博士号取ってからにしろ。
0090デフォルトの名無しさん2010/10/24(日) 19:27:54
シッタルダの考えやHaskellの当初の理想なんってどうでもいいんだよ。
世間が求めているのは便利なものだ。
大乗仏教は人々に支持された。
Haskellは?
0091デフォルトの名無しさん2010/10/24(日) 19:29:25
F#でも使ってろ、が答えだと思う
0092デフォルトの名無しさん2010/10/24(日) 19:52:17
もしかして、CommonLispの方ですか。
0093デフォルトの名無しさん2010/10/24(日) 20:33:13
>>90
少なくとも嫌ってる人は少ないだろうな
大半は「好き」「はぁ?何それ」 のどちらかだろ
0094デフォルトの名無しさん2010/10/24(日) 21:37:37
儲はどこもキモイな〜
0095デフォルトの名無しさん2010/10/25(月) 06:40:22
具体的なことは何も言えないわけですねわかります
0096デフォルトの名無しさん2010/10/25(月) 12:13:28
10スレ前ぐらいで虐められた奴がまだ粘着しているって感じやね
0097(信は力なり)Perl忍者 ◆M5ZWRnXOj6 2010/10/25(月) 23:27:04
>>89
最後の行にPerl忍者とかかかれてもきずかないんですが

死ねよハゲ
0098デフォルトの名無しさん2010/10/25(月) 23:59:22
Arrow がなぜ生まれたのかを知りたい人たちに
John Hughes が著わした次の論文を紹介する。

Generalising Monads to Arrow

モナドの利点も簡潔にまとめてあるから、
モナドって何の役に立つんだ? という人にも参考になる。
0099デフォルトの名無しさん2010/10/26(火) 00:01:42
>>98
論文のタイトルが間違ってた。
細かいことだが著者に失礼なので訂正させてほしい。

Generalising Monads to Arrows
0100デフォルトの名無しさん2010/10/26(火) 13:39:10
IOモナドのような副作用系のモナドは、

1. 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
>>100
>Maybeモナドはその劣化版

何となくだけど、ちょっとだけ引っかかる。

Monad クラスのインスタンスは全て等しく優劣無くモナドなんじゃないの?
何の視点で優劣を比べた結果 Maybeモナド が List モナドに劣ると考えたの?
■ このスレッドは過去ログ倉庫に格納されています