我已经定义了无限列表的无限列表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
进入 ghci,如果我根本没有评估任何一个,我可以: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'
内容,因为我只对其进行了部分评估。为什么它不起作用?