【发布时间】:2019-05-20 19:57:59
【问题描述】:
我正在尝试将折叠与 ++ 一起使用。当我检查它的类型时它应该可以工作:
> :t foldl (++)
foldl (++) :: Foldable t => [a] -> t [a] -> [a]
当我尝试这样使用它时
> foldl (++) [1] [1,2,3]
我收到如下错误:
约束中的非类型变量参数:Num [a] (使用 FlexibleContexts 允许这样做)
我做错了什么?
【问题讨论】:
-
您的折叠计算结果为
((([1] ++ 1) ++ 2) ++ 3),这是错误的类型,因为++需要两个列表。 GHC 尝试通过要求Num [a]将每个1,2,3转换为列表来完成这项工作,但失败了。
标签: haskell