因为你foldl
可能使用错误的方式.foldl
作为签名:
Foldable t => (b -> a -> b) -> b -> t a -> b
所以你给它一个函数(这里(+)
)一个初始值和一系列值.你可以修改你的代码:
module Asig1 where f as ys x = (s,z) where ws = zipWith (*) as ys s = foldl (+) x ws --instead of foldl (+) ws x z = s
您可以进一步改进代码,因为z = s
没有必要:
module Asig1 where f as ys x = (s,s) where ws = zipWith (*) as ys s = foldl (+) x ws --instead of foldl (+) ws x