IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

usage de l'interpréteur


Sujet :

Haskell

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut usage de l'interpréteur
    Bonsoir,

    voulais passer ma soirée à explorer Haskell pour la toute première fois (je suis en train de lire The Haskell Road to Logic, Mathematics and Programming et le premier chapitre me plaît bien).

    Quand je charge mes exemples et autres tests depuis un fichier l'interpréteur reconnaît bien les fonctions. Mais je n'arrive pas à déclarer de fonctions en ligne (comme avec irb, l'interpréteur ruby).

    Volià ce que disent hugs et ghc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Hugs.Base> makeList = 1 : makeList
    ERROR - Syntax error in input (unexpected `=')
     
    Prelude> makeList = 1 : makeList
    <interactive>:1:9: parse error on input `='
    J'ai raté quelque chose, mais quoi ?

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Bah, j'ai trouvé une solution (au moins provisoirement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Hugs.Base> :s -Eemacs
    Hugs.Base> :e GS1.hs
    Hugs.Base> :l GS1.hs
    ...
    Hugs.Base> :e
    ...

  3. #3
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Dans un REPL, utilise une expression let:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > let x = 10
    > x + x
    20

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    En fait GHCi (ou Hugs dans ton cas je suppose, bien que je ne connaisse pas vraiment Hugs) ne seraient pas très pratique si ils ne pouvaient pas faire des entrées/sorties et des effets de bords, ils sont donc dans la monade IO. En pratique ça signifie que tu ne peux pas juste coller du code de top-level dans la REPL et que ça marche.
    Entre autre, pour déclarer une variable ou une fonction, tu dois utiliser let{}. En contrepartie tu peux utiliser toutes les fonctions de la monade IO comme putStr, print, ... Tu peux également taper toute expression Haskell valide, l'interpréteur le mettra dans IO automatiquement, par exemple tu peux utiliser let ... in ..., appliquer des fonctions, etc.

    Pour ma part, j'utilise haskell-mode pour Emacs, ainsi je tape la plupart des fonctions et autres déclarations de types de données dans un script Haskell puis je charge ce script dans GHCi (C^c C^l) et je teste mes fonctions ou éventuellement mon main dans l'interpréteur. C'est très confortable et j'ai toute la puissance d'Emacs à portée de la main. J'ai cru comprendre qu'il y avait la même chose pour Vi.

    NB : Pour une liste des commandes "spéciales" accessible dans l'interpréteur, tape :help au prompt, tu as des trucs intéressant dans le tas.
    --
    Jedaï

  5. #5
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Impeccable, merci (à vous deux).

    Pour l'instant je teste mes essais avec hugs et ghci (hmm, ghc a mis presque trois heures à compiler sur mon portable ). Avec emacs comme éditeur, bien sûr (je n'ai jamais pu me faire à vi). Vais installer l'haskell-mode de ce pas.

    Etrangement hugs refuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >let { divides d n = rem n d == 0 }
    ERROR - Syntax error in expression (unexpected end of input)
    alors que ghci ne fait pas de problème.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Je remets ca au goût du jour (c'est-à-dire la différence entre HUGS et GHCi).

    Avez vous une solution ?

Discussions similaires

  1. Interpréteur d'assembleur
    Par JOYE dans le forum Assembleur
    Réponses: 11
    Dernier message: 24/03/2004, 15h42
  2. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo