混亂我有一個函數關於懶惰
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