我正在嘗試使用摺疊函數在Haskell中取整數的平方和。但是,我從GHCi得到一個神祕的錯誤。這裏是我的一行:帶有函數組合的類型推斷列表
((^2) . foldl) (+) 0 [1..100]
我正在從GHCI得到的是:
Prelude> ((^2) . foldl) (+) 0 [1..100]
<interactive>:19:3:
No instance for (Num (b0 -> [b0] -> b0))
arising from a use of `^'
Possible fix:
add an instance declaration for (Num (b0 -> [b0] -> b0))
In the first argument of `(.)', namely `(^ 2)'
In the expression: (^ 2) . foldl
In the expression: ((^ 2) . foldl) (+) 0 [1 .. 100]
我認爲這個問題是我基於此類型傳遞末名單宣言。
Prelude> :t ((^2) . foldl) (+) 0 [1..100]
((^2) . foldl) (+) 0 [1..100]
:: (Enum b, Num b, Num (b -> [b] -> b)) => b
任何人都可以給我一些瞭解爲什麼這種類型期待一個Enum
任何方式來顯式轉換列表中,這樣我可以調試這個功能呢?提前致謝。
甚至更簡單:'與foldl(+)0 [1..100]^2'。 – augustss 2013-05-01 19:29:18