混乱我有一个函数关于懒惰
myLength = foldl (\ x _ -> x + 1) 0
从而未能与大约10^6个元素(myLength [1..1000000]失败)输入堆栈溢出。我相信这是因为当我用foldl'替换foldl时,thunk的构建起作用。 目前为止这么好。
但现在我有另一个函数以逆转列表:
myReverse = foldl (\ acc x -> x : acc) []
它使用懒惰版本与foldl(而不是与foldl的“)
当我做 myLength . myReverse $ [1..1000000]
。 这次它工作正常。我不明白为什么foldl适用于后一种情况而不适用于前者?
在此澄清myLength使用与foldl”,而myReverse使用与foldl
我的不好!纠正它 – 2010-05-25 11:29:45
两种情况下,我得到一个堆栈溢出异常。 – dave4420 2010-05-25 11:43:00
不,这只是你正在查看的网站顶部的徽标;)(我没有得到myReverse的例外) – Artelius 2010-05-25 11:51:14