Haskellでは、引数の型が必要な型と一致しないため、関数の定義に問題があります。
たとえば、を取り、の平方根のn :: Int
1からの整数のリストを生成する関数を作成したいと思います。したがって、次のような関数が必要になります。floor
n
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.
誰かが私にエラーの原因とそれを修正する方法を説明してもらえますか?