web-dev-qa-db-fra.com

ghci 'Not in scope:' message

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?

48
user181351

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
56
Yasir Arsanukaev

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
7
Maqbool