Je suis en train de suivre le didacticiel "Learn you a Haskell" et je suis à cette partie:
lucky :: (Integral a) => a -> String
Lorsque j'essaie d'exécuter cette ligne, j'obtiens:
<interactive>:1:1: Not in scope: `lucky'
Qu'est-ce que je fais mal?
Ce n'est pas un code de fonction, c'est une signature de fonction qui ne peut être enregistrée que dans un module avec la définition de la fonction et être chargée dans GHCi.
Cette signature signifie que vous allez définir une fonction lucky
qui obtient un Integer
et retourne un String
.
Cependant, si vous composez vos fonctions en utilisant GHCi comme interpréteur interactif, vous pouvez laisser Haskell déduire le type de votre fonction, e. g.:
ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String
Si vous voulez essayer dans le GHCI, vous pouvez utiliser un bloc de commande multi-ligne
:{
lucky :: Int -> String
lucky a = show(a)
:}
:type lucky
lucky :: Int -> String