web-dev-qa-db-fra.com

Erreur Haskell Erreur d'analyse sur l'entrée `= '

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.

110
Son

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
159
kennytm

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
50
dave4420

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.

20
Raeez

À partir de GHC 8.0.1, cela ne générerait plus d'erreur.

4
glguy