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 :

Erreur : illegal signature in pattern


Sujet :

Haskell

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Erreur : illegal signature in pattern
    debutant en progammation haskell
    lors de l 'éxécution du programme
    j'ai l'erreur suivante :
    tutorial.hs:20:6:
    illegal signature in pattern
    Use -XPatternSignatures to permei it
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		let people :: [Person]
    			people = read people_text
    Ce bout de code est indenté incorrectement, et Haskell le voit donc comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let (people :: [Person]) people = read people_text
    Ce qui n'a aucun sens mais pourrait être correct syntaxiquement avec l'une des extensions syntaxiques de GHC (extension utile par ailleurs).

    Je répète les règles pour le layout en Haskell : certains mots clés introduisent une série soit de déclaration (let, where) soit d'actions monadiques (do), alors :
    1. le niveau d'indentation est déterminé par la position du premier caractère non espace après le mot clé,
    2. chaque élément de la série doit commencer au même niveau d'indentation,
    3. chaque ligne qui a un niveau d'indentation plus long est la continuation de l'élément précédent,
    4. la première ligne qui a un niveau d'indentation inférieur met fin à la série.


    Ici le "p" de "people :: [Person]" détermine le niveau d'indentation pour la série de déclarations, le niveau d'indentation est donc 2 tabulations et 4 espaces ("let "), alors que la ligne suivante est indentée par 3 tabulations, elle continue donc la ligne précédente (car 1 tabulation compte plus que 4 espaces).

    Plusieurs remarques :
    • un bon éditeur te facilitera l'indentation correcte (par exemple Emacs ou Vim),
    • mélanger des tabulations et des espaces est une très mauvaise idée (par exemple passes à la ligne après le "let"),
    • je dirais même qu'utiliser des tabulations est une assez mauvaise idée (je peux développer).


    --
    Jedaï

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Merci
    Merci pour ton aide et tes conseils.
    Je n'ai pas pu faire de test : je ferai les modifications ce soir et je te donnerai le résultat en modifiant le code comme expliqué.
    Pour faire le code j'utilise notepad++ qui me semblait être bien.
    Qu'en penses-tu ??

    Merci encore

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par francesumco Voir le message
    Pour faire le code j'utilise notepad++ qui me semblait être bien.
    Qu'en penses-tu ??
    Notepad++ est très bien en général, mais n'a pas de facilité particulière pour le Haskell a priori (contrairement à Emacs ou Vim, le haskell-mode d'Emacs en particulier est un régal à utiliser). En tout cas je te recommande d'au moins le régler pour qu'il n'utilise plus de tabulation, ça t'évitera d'avoir l'impression que deux lignes sont alignées alors qu'elles ne le sont pas vraiment.

    --
    Jedaï

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Après test

    Suite à tes conseils
    j'ai testé et cela fonctionne parfaitement
    merci encore pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 'fdopen' signal l'erreur: 'Illegal seek'
    Par ListD dans le forum Débuter
    Réponses: 18
    Dernier message: 04/03/2009, 18h32
  2. [erreur] illegal start of expression
    Par aymen83 dans le forum Général Java
    Réponses: 4
    Dernier message: 15/12/2008, 11h46
  3. Réponses: 6
    Dernier message: 20/07/2007, 14h17
  4. Réponses: 3
    Dernier message: 24/11/2006, 18h20
  5. Réponses: 1
    Dernier message: 04/10/2006, 09h01

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