Je suis nouveau sur Haskell et après avoir commencé, ghci
j'ai essayé:
f x = 2 * x
et j'ai obtenu:
<interactive>:1:4: parse error on input `='
ce que je ne comprends pas.
Étrangement, cela fonctionnait bien avant. Je suppose que j'ai fait Haskell mal configuré. La réinstallation de ghc6 ne résout pas le problème.
Pour information, j'utilise Ubuntu 10.4 et la version de ghc6 est 6.12.1-12
let
dans ses exemplesLYAH
ne mentionne maintenantlet
. Mais un suivi. DansLYAH
j'ai luaddThree :: Int -> Int -> Int -> Int
(nouvelle ligne)addThree x y z = x + y + z
mais seul le second fonctionneGHCi
aveclet
. Pourquoi?Lorsque vous tapez dans un fichier source Haskell,
est correct.
Lorsque vous tapez directement dans ghci, vous devez taper
let
au début de la ligne:la source
let
. Considérez GHCi comme une grandelet ... in ...
déclaration.Une bonne règle de base pour utiliser ghci est que tout code que vous entrez doit être conforme à la sémantique do-block; c'est-à-dire que vous pouvez supposer syntaxiquement que vous programmez dans la monade IO (s'il s'agit d'une nouvelle terminologie, ne vous inquiétez pas! Je vous recommande vivement de lire ce tutoriel ).
Cette réponse illustre ce point avec un exemple et peut fournir un aperçu plus pratique de la nature des IO et ghci.
la source
let
; J'étais comme "wtf, pourquoi dois-je utiliserlet
" et puis j'ai lu ceci et j'ai été éclairé.À partir de GHC 8.0.1, cela ne générerait plus d'erreur.
la source