Я определил бесконечный список бесконечных списков 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'
, поскольку я только частично его оценил. Почему он не работает?