我被要求做一個計算像添加號碼的權力,在Haskell與與foldl
1^2 + 2^2 + 3^2 ...
雖然我覺得它很容易與列表理解實施哈斯克爾功能
sum [ k^2 | k <- [1..100]]
或地圖
sum (map (\x -> x*x) [1..100])
我有一些困難得到如何實現它foldls。
如果我沒看錯的,需要不超過在遞歸函數3個參數少,實現與這樣的結果:
- 當前位置(1 ...直到n)
- 的電流和
- 在哪裏停止
即使我定義這個功能,它仍然會返回一個元組,而不是數字(如我需要它!)。
任何人都可以提供一些線索,我可能會錯過什麼嗎?
感謝
順便提一句,我通常也會推薦'foldl'(在Data中定義)。列表),這迫使累加器在每一步都被評估。使用GHC進行編譯時,無論如何都會得出結論,但在GHCi或Hugs中,它可以在恆定空間運行或內存耗盡之間進行區分。 – mokus 2010-11-18 13:46:15