Dans Haskell, j'ai quelques problèmes pour définir des fonctions car les types de mes arguments ne correspondent pas au type requis.Pourquoi est-ce que je reçois une erreur de type?
Par exemple, je voudrais écrire une fonction qui prend un n :: Int
et produit la liste des entiers de 1 à floor
de la racine carrée de n
. Par conséquent je voudrais avoir une fonction telle que:
list :: Int -> [Int]
Au départ, je défini la fonction comme suit:
list :: Int -> [Int]
list n = [1 .. floor (sqrt n)]
Quand je chargé le sript, il y a un message d'erreur des types qui ne correspondent pas. Cependant, je ne suis pas sûr de ne pas correspondre au type de la fonction sqrt
ou de la fonction floor
. Le message d'erreur est le suivante:
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.
Quelqu'un pourrait-il me expliquer ce qui cause l'erreur et comment il peut être fixé?