12

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フリーズします。pathCountspathCounts'

ghci> head . head $ pathCounts'
1
ghci> :p pathCounts'
pathCounts' = (1 : (_t4::[Integer])) : (_t5::[[Integer]])
ghci> :p pathCounts
^CInterrupted.

部分的にしか評価していないので、:p pathCountsと同じものを出力することを期待しています。:p pathCounts'なぜ機能しないのですか?

4

1 に答える 1