繁体   English   中英

Haskell对函数调用感到沮丧

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM