関数型プログラミング言語Haskellat TECH関数型プログラミング言語Haskell - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト700:デフォルトの名無しさん 03/07/15 08:15 >>694 その通り。IO a はHaskellの側から見ると、 data IO a = IO (World -> (a, World)) このような構造になっていて、実行結果がIOだった場合に、表示する前にWorldが渡されて実行される。 実際はそんな面倒なことしていないと思うけどね。 701:デフォルトの名無しさん 03/07/15 08:48 半分ぐらい読みました…まさに>>698のおっしゃる通り…それ以後の式を全部λとして渡して、 でっかい合成関数を組み立てて、最後に一括して実行してるようなイメージでいいのでしょうか?→モナド (と同時に、実装までそうなってないよなあと信じたい) 702:デフォルトの名無しさん 03/07/15 09:03 >>698 モナドを使えば副作用は「ある」というべきだろう。 たとえばモナドを利用したカウンタを利用して、 あるいは、ファイルに1, 2, ...と書き込んでループをつくれば、 あきらかにそこには副作用があるわけだ。 むしろWorldを変化させながら渡し続けるという発想の転換で(言語に対し) 無いように見せかけているだけだ。人間にとっては副作用は存在する。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch