Haskell编译报错:[Int] -> String与[Char]类型不匹配问题求助
错误原因
类型错误的触发点是histogram函数的实现行:
histogram xs = histogram' . toCounts
Haskell 中函数组合运算符(.)的作用是拼接两个单参数函数,f . g本质是待接收参数的函数,等价于\x -> f (g x)。你直接将这个组合函数作为histogram的返回值,但histogram的类型签名要求返回String,实际返回的是[Int] -> String类型的函数,与错误提示完全匹配。
修复方案
两种等价的修复方式可选:
- 将组合后的函数应用到入参
xs上:histogram xs = (histogram' . toCounts) xs - 直接使用无点(Pointfree)写法,删除多余的形参声明:
histogram = histogram' . toCounts
其他说明
你当前提供的代码还缺失trim、insertOrAdjust两个函数的实现,解决完这个类型错误后需要补全对应实现,才能正常编译运行。
内容的提问来源于stack exchange,提问作者creb0002
相关产品推荐
相关产品推荐

