在 Haskell 中,我在定义函数时遇到了一些问题,因为我的参数类型与所需的类型不匹配。
例如,我想编写一个函数,它接受一个n :: Int
并产生从 1 到 的floor
平方根的整数列表n
。因此,我将有一个功能,例如:
list :: Int -> [Int]
最初我将函数定义如下:
list :: Int -> [Int]
list n = [1 .. floor (sqrt n)]
当我加载脚本时,出现类型不匹配的错误消息。但是,我不确定我是否不匹配sqrt
函数或floor
函数的类型。错误信息如下:
No instance for (Floating Int)
arising from a use of 'sqrt' at pe142.hs:6:22-27
Possible fix: add an instance declaration for (Floating Int)
In the first argument of 'floor', namely '(sqrt n)'
In the expression: floor (sqrt n)
In the expression: [1 .. floor (sqrt n)]
Failed, modules loaded: none.
有人可以向我解释导致错误的原因以及如何修复它吗?