-1
votes

"Obtenez la programmation avec l'erreur HASKELL" dans le premier exemple de code

Je lis je lis "Obtenez la programmation avec HASKELL" et la deuxième leçon consiste à écrire et à compiler ce code simple xxx

mais je reçois cette erreur de GHCI < pré> xxx

L'auteur n'a expliqué aucune chose à propos de la syntaxe, alors je ne sais pas où est l'erreur ici


2 commentaires

Vous ne souhaitez pas ajouter une nouvelle ligne ici, ou du moins pas sans indentation appropriée CreateMail Rec Bookt auth = TODART REC ++ BodyPart Bookt ++ DuPart Auth devrait résoudre le problème.


Je pense que j'ai lu une critique amazonienne du livre se plaint de cette erreur et de la manière dont l'auteur aurait dû parler d'indentation plus


3 Réponses :


6
votes

mauvaise utilisation de espaces et l'indentation peut causer des problèmes dans HASKELLL. Dans le code, vous pouvez essayer d'écrire en une ligne afin que vous ne soyez pas confus par l'indentation. Exemple:

CreateMail REC BARTHT Auth = TOPART REC ++ BodyPart Bookt ++ FuPart Auth

Si vous voulez utiliser le style du tutoriel, ce que vous devez faire est : xxx

essentiellement, placez un espace devant chaque ligne et il devrait résoudre le problème.


0 commentaires

2
votes

Haskell s'appuie sur l'indentation afin que nous devions le réparer un peu: xxx


1 commentaires

Petit Nitpick: Strictement Parlant Haskell ne "net s'appuyer" sur l'indentation. Vous pouvez tout écrire avec { et } autour des blocs de code et ; après chaque "déclaration", puis GHC (ou n'importe quel compilateur HASKELLL) Sera capable d'analyser une amende, peu importe où vous mettez votre espace blanche. Strictement parlant les règles d'utilisation de WhitSpace ne sont qu'une sorte de sucre syntaxique pour dire au compilateur où insérer les accolades et les points-virgules bouclés. (Cela fait partie de la spécification de langue formelle.) Mais oui, presque tout le monde utilise l'indentation et pour une bonne raison - la lisibilité est importante.



0
votes
toPart recepient = "Dear " ++ recepient ++ " \n"
bodyPart title = "Thanks for buying " ++ title ++" \n"
fromPart author = "thanks \n " ++ author   

createEmail recepient title author
  = toPart recepient ++
    bodyPart title ++
    fromPart author

main = do
print "who is the email for?"
recepient <- getLine
print "what is the title?"
title <- getLine
print "Who is the author?"
author <- getLine
print (createEmail recepient title author)

2 commentaires

Ceci est un code de travail à 100% du même sacré


Bien que cela puisse répondre à la question, si possible, vous devriez modifier Votre réponse à inclure une courte explication de comment Ce code bloque répond à la question. Cela aide à fournir un contexte et rend votre réponse beaucoup plus utile aux futurs lecteurs.