Haskell对函数调用感到沮丧

2 monads haskell types list

学习Haskell正在杀了我.如果我要编写一个函数,它接受一个可订单元素数组,并输出相同的东西,我该怎么做?

我尝试:

main = testfn [[1],[2]]

testfn :: (Ord a) => [[a]] -> [[a]]
testfn x = x
Run Code Online (Sandbox Code Playgroud)

但我得到的信息是:

无法将预期类型'IO t0'与实际类型'[[a0]]'匹配在表达式中:main检查函数'main'的类型时

bdo*_*lan 7

这里你的问题是main必须是一种形式IO a(你可以在错误中看到这一点 - GHC期望主要的推断类型[[a0]]匹配IO t0).这里main有类型[[Int]].您只需打印结果即可轻松解决此问题:

main = print (testfn [[1],[2]])
Run Code Online (Sandbox Code Playgroud)

  • 我想在谈论Haskell和数组时,了解优秀的`vector`包可能会非常有用.它的界面更像是大多数命令式语言中的数组,而且通常它只是你需要的.看看:http://hackage.haskell.org/packages/archive/vector/0.9/doc/html/Data-Vector.html (4认同)