学习Haskell正在杀了我。如果我要编写一个带有可订单元素数组的函数,并输出相同的内容,我该怎么做?
我试试:
main = testfn [[1],[2]]
testfn :: (Ord a) => [[a]] -> [[a]]
testfn x = x
但我得到的信息是:
无法将预期类型'IO t0'与实际类型'[[a0]]'匹配 expression:main检查函数'main'的类型时
答案 0 :(得分:7)
您的问题是,main
必须是IO a
形式的类型(您可以在错误中看到这一点 - GHC希望主推断类型[[a0]]
与{匹配} {1}})。此处IO t0
的类型为main
。您只需打印结果即可轻松解决此问题:
[[Int]]
答案 1 :(得分:3)
函数main
必须包含IO a
类型。您将main定义为testfn [..]
,其类型为Ord a, Num a => [[a]]
。
您希望该计划做什么?与您订购的已知解决方案相比较?
main = print (knownSolution == testfn [[1],[2]])
或者打印结果?
main = print $ testfn [[1],[2]]