Je suis nouveau dans Haskell et après avoir démarré ghci
j'ai essayé:
f x = 2 * x
et j'ai obtenu:
<interactive>:1:4: parse error on input `='
que je ne comprends pas.
Étrangement, cela fonctionnait bien avant. Je suppose que j'ai mal configuré Haskell. 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.
Dans GHCi 7.x ou inférieur, vous avez besoin d’un let
pour définir les éléments qu’il contient.
Prelude> let f x = x * 2
Prelude> f 4
8
Depuis GHC 8.0.1, les liaisons de haut niveau sont supportées dans GHCi , le code de l'OP fonctionnera donc sans changement.
GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/ :? for help
Prelude> f x = x * 2
Prelude> f 4
8
Lorsque vous tapez dans un fichier source Haskell,
f x = 2 * x
est correct.
Lorsque vous tapez directement dans ghci, vous devez taper let
au début de la ligne:
let f x = 2 * x
Une bonne règle pour utiliser ghci est que tout code que vous entrez doit être conforme à la sémantique do-block; c'est-à-dire que vous pourriez supposer syntaxiquement que vous programmez dans le IO monad (s'il s'agit d'une nouvelle terminologie, ne vous inquiétez pas! Je recommanderais vivement de lire ceci tutoriel ).
This answer illustre ce point par un exemple et peut fournir des informations plus utiles sur la nature de IO et ghci.
À partir de GHC 8.0.1, cela ne générerait plus d'erreur.