学習ログ

Lazy Evaluation

理解があってるのかな?

Prelude> let hoge a = putStrLn "fuga"
Prelude> hoge (map odd [1..])
fuga

"map odd [1..]"の箇所が評価されることなく、fugaが出力される。
必要になるまで、評価をさぼることで、計算量を押さえることができる。
怠惰は数学の美徳。


備考:map odd [1..]の結果

relude> map odd [1..]
[True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,False,True,
.....

ctr + cでストップ