web-dev-qa-db-fra.com

Erreur haskell: not in scope. Qu'est-ce que ça veut dire?

J'ai commencé avec Haskell aujourd'hui et toutes les fonctions que j'exécute sur ghci affichent ce message. Je veux juste savoir pourquoi cela se produit. Je sais qu'il y a beaucoup de questions à ce sujet, mais c'est un cas simple et j'ai besoin de comprendre cette erreur au début

function3 :: Int -> [Int]
function3 x = [a | a <- [1..x] mod a x == 0]
13
Marcio

Une erreur s'est-elle produite lorsque vous tapez le type de fonction dans GHCi?

$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Prelude> function3 :: Int -> [Int]

<interactive>:1:1: error:
    Variable not in scope: function3 :: Int -> [Int]
Prelude> 

Si c'est le cas, vous devez utiliser plusieurs entrées de ligne

Prelude> :{
Prelude| function3 :: Int -> [Int]
Prelude| function3 x = [a | a <- [1..x], mod a x == 0]
Prelude| :}

Et noté , avant mod

Alternativement, pour un meilleur flux de travail, vous pouvez enregistrer votre code dans un fichier et le charger dans GHCi en utilisant : load

$ cat tmp/functions.hs 
function3 :: Int -> [Int]
function3 x = [a | a <- [1..x], mod a x == 0]

$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Prelude> :l tmp/functions.hs 
[1 of 1] Compiling Main             ( tmp/functions.hs, interpreted )
Ok, modules loaded: Main.
*Main> :t function3 
function3 :: Int -> [Int]
*Main> 
21
wizzup