我在GHCi中写了一个快速的单行,并尝试用地图组合和。我认为它失败的原因是因为map给出了一般类型[b]的输出,而sum取得了特定输入Num a => [一个]。但是,假设map函数的输出类型为Num b =>,此代码没有任何问题。并[b]。
我认为编写一个限制类型声明可能有效(虽然我猜这会阻止你在GHCi中这样做)但它仍然没有:
myFunc :: Num b => (a -> b) -> [a] -> b
myFunc = sum . map
给我以下错误:
Couldn't match expected type `[[a] -> b]'
with actual type `[a] -> [b]'
Expected type: (a -> b) -> [[a] -> b]
Actual type: (a -> b) -> [a] -> [b]
In the second argument of `(.)', namely `map'
In the expression: sum . map
有没有办法做到这一点?也许我只是遗漏了一些明显的东西(Haskell新手)。