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
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
Ce bout de code est indenté incorrectement, et Haskell le voit donc comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part let (people :: [Person]) people = read people_text
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 :
- le niveau d'indentation est déterminé par la position du premier caractère non espace après le mot clé,
- chaque élément de la série doit commencer au même niveau d'indentation,
- chaque ligne qui a un niveau d'indentation plus long est la continuation de l'élément précédent,
- 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ï
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
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ï
Suite à tes conseils
j'ai testé et cela fonctionne parfaitement
merci encore pour ton aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager