首先,非常感谢您抽出时间回答我的问题。
首先,请快速浏览一下我的代码。您不必理解代码,只需注意类型即可。
这会返回一个错误,内容是:
Couldn't match expected type `Int' with actual type `Integer'
Expected type: [Int]
Actual type: [Integer]
In the first argument of `myfun', namely `primes'
In the expression: myfun primes
失败,已加载模块:无。
如果我将类型更改为 Int 而不是 Integer,我可以成功运行此命令,不会出现错误,例如“primes::[Int]”
但是,我需要将其保留为整数,以便程序能够获取大量数字。
非常感谢您提前提供的帮助。
最佳答案
错误来自 myfun
中的 (!!)
:
myfun (a:ab) = fibs !! (a-1) : myfun(ab)
较新的 GHC 可能会告诉您(我认为)。试试这个:
myfun (a:ab) = fibs !! ((fromInteger a)-1) : myfun(ab)
fromInteger
的结果类型是多态的,因此这里类型系统推断您需要一个 Int
。 hoogle对此类问题了解很多。
关于Haskell 类型错误(短代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14494804/