関数型プログラミング言語Haskell Part34 (667レス)
上
下
前
次
1-
新
52
: 2022/01/16(日)18:54
ID:f2QwXzzi(4/4)
AA×
>>51
[
240
|320|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
52: [] 2022/01/16(日) 18:54:16.95 ID:f2QwXzzi >>51 square x = x * x を square x = seq x $ x * x にして明治的に“xを評価してからx*xを計算せよ”に変えるともちろん*ひとつです それは納得いきます ウォークスルーHaskellにもそうなると書いてあるしHaskell Language Report 2010にもseqで正格評価になると書いてあります なのでコレは納得いくんですがseqなしの場合の動作が文書と異なるように見えます もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど コレはたまたまGHCの開発者が優秀でHaskellの標準動作としては保証されない事までやってくれてるだけなのか、標準動作としてメモ化しないといけないことになってるのかどっちだろうと 今のところ今自分が勉強してるプログラムにはseq入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするし、あるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし http://mevius.5ch.net/test/read.cgi/tech/1639713446/52
を にして明治的にを評価してからを計算せよに変えるともちろんひとつです それは納得いきます ウォークスルーにもそうなると書いてあるし にもで正格評価になると書いてあります なのでコレは納得いくんですがなしの場合の動作が文書と異なるように見えます もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど コレはたまたまの開発者が優秀での標準動作としては保証されない事までやってくれてるだけなのか標準動作としてメモ化しないといけないことになってるのかどっちだろうと 今のところ今自分が勉強してるプログラムには入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするしあるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 615 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.041s