【.NET】F#について語れ【OCAML】at TECH【.NET】F#について語れ【OCAML】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト450:デフォルトの名無しさん 09/02/12 07:21:21 >>445 冗長なんじゃなくて、正格評価の世界では意味が全く別のものになる。 let rec fix = fun f -> f (fix f) let rec fix = fun f -> fun x -> f (fix f) x 後者では x が遅延の役割をしてくれる。 Haskellのような遅延評価の世界では、確かに冗長なだけ。 451:デフォルトの名無しさん 09/02/12 07:31:11 f そのものを遅延化してしまう(>>439)のと、 引数 x を追加して遅延の役割をしてもらう(>>443)のと、 どちらがコードの見た目的にやさしいかは明らか。w 452:デフォルトの名無しさん 09/02/13 07:47:47 f (fix f) と fun x -> f (fix f) x って同義じゃないの? んー、マジで分からん 453:デフォルトの名無しさん 09/02/13 19:50:03 let rec fix f = f (fix f) だと、f が渡された途端、 f (fix f) ↓ f (f (fix f)) ↓ f (f (f (fix f))) ↓ f (f (f (f (fix f)))) ↓ f (f (f (f (f (fix f))))) ↓ あぼーん 関数を返そうとはするが、fix を展開しようとして無限ループ。 let rec fix f = fun x -> f (fix f) x だと、f が渡されても、 fun x -> f (fix f) x x が渡されるまで fix は展開されない。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch