在8.hs
我定义
digitProduct [] = 1
digitProduct (c:rest) = (read [c] :: Int) * digitProduct rest
然后在ghci
内,我运行
digitProduct $ take 10000 $ repeat '9'
它会产生一个结果:
-3633723290617080191
我会想象10000的递归会导致堆栈溢出。另外,我的递归不是尾调用。这是怎么回事?
答案 0 :(得分:3)
没有什么特别的事情发生。 10,000只是不足以填满堆栈。当我用ghci
替换take 10000
时,我在take 100000000
中出现堆栈溢出。