Haskell erreur parse error sur l'entrée `='

je suis nouveau à 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 `='

que je ne comprends pas.

étrangement, ça marchait bien avant. Je suppose que J'ai mal fait Haskell. Réinstaller 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

106
demandé sur Alex 2011-05-31 12:35:29

4 réponses

Dans GHCi 7.x ou ci-dessous, vous avez besoin d'un let définir les choses.

Prelude> let f x = x * 2
Prelude> f 4
8

à partir de GHC 8.0.1, les fixations de haut niveau sont supportées dans GHCi , donc le code de OP fonctionnera sans changement.

GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/  :? for help
Prelude> f x = x * 2
Prelude> f 4
8
156
répondu kennytm 2017-01-11 15:31:04

quand 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
répondu dave4420 2011-05-31 08:56:37

une bonne règle empirique pour utiliser ghci est que tout code que vous entrez doit être conforme à la sémantique de Do-block; c'est-à-dire que vous pouvez supposer syntaxiquement que vous programmez dans la monade IO (si c'est une nouvelle terminologie, ne vous inquiétez pas! Je recommande vivement la lecture de ce tutoriel ).

cette réponse illustre ce point à l'aide d'un exemple, et peut fournir un aperçu plus pratique de la la nature de IO et ghci.

20
répondu Raeez 2017-05-23 12:09:55

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

4
répondu glguy 2016-10-15 04:32:13