Haskell 类型错误(短代码)

标签 haskell types casting

首先,非常感谢您抽出时间回答我的问题。

首先,请快速浏览一下我的代码。您不必理解代码,只需注意类型即可。

这会返回一个错误,内容是:

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 的结果类型是多态的,因此这里类型系统推断您需要一个 Inthoogle对此类问题了解很多。

关于Haskell 类型错误(短代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14494804/

相关文章:

Haskell - 检查列表中的任何字符串是否在字符串中

mysql - 在 WHERE 关闭中转换不一致的 int/varchar

swift - 快速从 Scripting-Bridge 访问 SBElementArray 内容

c++ - 从可变参数模板类中提取类型以实现成员函数重载

go - Go 中的类型转换结构是无操作的吗?

haskell - 如何导入特定的 PortNumber 构造函数

haskell - 是否可以在现有类型的子集上定义函数?

haskell - 是否可以用当前的返回类型退出 Haskell 中的函数?

C++ 十进制数据类型

parsing - 为什么我在这个解析器序列中出现类型错误(Erik Meijer 的第 8 课)?