関数型プログラミング言語Haskell Part34at TECH関数型プログラミング言語Haskell Part34 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト50:デフォルトの名無しさん 22/01/16 14:39:15.35 f2QwXzzi.net 何かの文章は "ウォークスルー Haskell" というやつでした http://walk.northcol.org/haskell/eval-strategies/ 3 ではなく 1 + 2 でやってました 51:デフォルトの名無しさん 22/01/16 18:39:45.50 ZlAL8rfa.net seqだと結果はどうなるんですか? 52:デフォルトの名無しさん 22/01/16 18:54:16.95 f2QwXzzi.net >>51 square x = x * x を square x = seq x $ x * x にして明治的に“xを評価してからx*xを計算せよ”に変えるともちろん*ひとつです それは納得いきます ウォークスルーHaskellにもそうなると書いてあるしHaskell Language Report 2010にもseqで正格評価になると書いてあります なのでコレは納得いくんですがseqなしの場合の動作が文書と異なるように見えます もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど コレはたまたまGHCの開発者が優秀でHaskellの標準動作としては保証されない事までやってくれてるだけなのか、標準動作としてメモ化しないといけないことになってるのかどっちだろうと 今のところ今自分が勉強してるプログラムにはseq入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするし、あるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch