我一直在問一些關於嚴格性的問題,但我想我之前錯過了這個標記。希望這更準確。Haskell:foldl'累加器參數
比方說,我們有:
n = 1000000
f z = foldl' (\(x1, x2) y -> (x1 + y, y - x2)) z [1..n]
不改變f
,我應該怎麼設置
z = ...
這樣f z
不會溢出堆棧? (即,不管n的大小在恆定空間中運行)
如果答案需要GHC擴展,那麼它是可以的。
我首先想到的是定義:
g (a1, a2) = (!a1, !a2)
然後
z = g (0, 0)
但我不認爲g
是有效的Haskell。