[英]Haskell frustration with function calls
学习Haskell正在杀了我。 如果我要编写一个函数,它接受一个可订单元素数组,并输出相同的东西,我该怎么做?
我尝试:
main = testfn [[1],[2]]
testfn :: (Ord a) => [[a]] -> [[a]]
testfn x = x
但我得到的信息是:
无法将预期类型'IO t0'与实际类型'[[a0]]'匹配在表达式中:main检查函数'main'的类型时
你的问题是main
必须是IO a
形式的IO a
(你可以在错误中看到这一点 - GHC期望main的推断类型[[a0]]
与IO t0
匹配)。 这里main
有类型[[Int]]
。 您只需打印结果即可轻松解决此问题:
main = print (testfn [[1],[2]])
函数main
必须具有类型IO a
。 您将main定义为testfn [..]
,其类型为Ord a, Num a => [[a]]
。
你想要该程序做什么? 与您订购的已知解决方案相比较?
main = print (knownSolution == testfn [[1],[2]])
或者打印结果?
main = print $ testfn [[1],[2]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.