pathCounts
無限リストの無限リストと有限リストの無限リストを定義しましたpathCounts'
:
import Data.Function (fix)
nextRow xs = fix $ \ys -> zipWith (+) xs (0:ys)
pathCounts = repeat 1 : map nextRow pathCounts
pathCounts' = map (take 100) pathCounts
どちらかをまったく評価していない場合は、:p
どちらでも正常に使用できます。
ghci> :p pathCounts
pathCounts = (_t1::[[Integer]])
ghci> :p pathCounts'
pathCounts' = (_t2::[[Integer]])
しかし、pathCounts'
部分的に評価すると、まだ成功している間に:p
フリーズします。pathCounts
pathCounts'
ghci> head . head $ pathCounts'
1
ghci> :p pathCounts'
pathCounts' = (1 : (_t4::[Integer])) : (_t5::[[Integer]])
ghci> :p pathCounts
^CInterrupted.
部分的にしか評価していないので、:p pathCounts
と同じものを出力することを期待しています。:p pathCounts'
なぜ機能しないのですか?