在Haskell中,我有一些定義函數的問題,因爲我的參數類型與所需的類型不匹配。爲什麼我收到類型錯誤?
例如,我想寫一個函數,該函數需要n :: Int
並生成n
的平方根的從1到floor
的整數列表。因此,我將有一個功能,例如:
list :: Int -> [Int]
本來我所定義的函數,如下所示:
list :: Int -> [Int]
list n = [1 .. floor (sqrt n)]
當我加載sript,存在不匹配的類型的錯誤消息。但是,我不確定我是否與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.
有人可以向我解釋是什麼導致錯誤以及如何修復?