【发布时间】:2020-05-13 05:07:28
【问题描述】:
好的,大家好,我遇到了一个奇怪的问题。
hist :: [Int] -> [Int]
hist x = (foldr (+) 0 x)
上面的代码不起作用,因为尝试编译我得到了错误,预期类型“[Int]”无法与实际类型“Int”匹配。我不明白。
有趣的事实:当我删除签名时,该功能可以正常工作! 有谁知道错吗?
谢谢!
【问题讨论】:
-
foldr (+) 0 :: Num a => [a] -> a。当您省略类型签名时,会推断出hist的正确类型。如果要指定具体类型,应该是[Int] -> Int。 -
提示:
foldr (+) 0的返回类型是什么? (如果不确定,可以询问 GHCi。)