関数型プログラミング言語Haskell Part34 (667レス)
上
下
前
次
1-
新
47
: 2022/01/16(日)12:22
ID:f2QwXzzi(1/4)
AA×
[
240
|
320
|480|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
47: [] 2022/01/16(日) 12:22:44.80 ID:f2QwXzzi 質問です 何かの文章で square x = x*x print $ square $ square 3 のようなプログラムをHaskell は square $ square 3 → square ( square 3 ) → ( square 3 ) * ( square 3 ) → ( 3 * 3 ) * ( 3 * 3 ) のようになる コレを避けるためにseqを使えばよいとあったのですが試しに import Debug.Trace square x = x * x const3 = trace "*" 3 main = do print $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ const3 みたいなプログラムで試してみました もし説明通りならconst3が2^15回呼ばれて*がいっぱい出てきそうですが、やってみると*は一個しか出てきません コレは何故ですか? ちなみにghcです ghcがconst3の結果を自分で勝手に“メモ化”してよきにはからってくれているんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/47
質問です 何かの文章で のようなプログラムを は のようになる コレを避けるためにを使えばよいとあったのですが試しに みたいなプログラムで試してみました もし説明通りならが回呼ばれてがいっぱい出てきそうですがやってみるとは一個しか出てきません コレは何故ですか? ちなみにです がの結果を自分で勝手にメモ化してよきにはからってくれているんでしょうか?
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 620 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.047s