Je lis je lis "Obtenez la programmation avec HASKELL" et la deuxième leçon consiste à écrire et à compiler ce code simple mais je reçois cette erreur de GHCI P> < pré> xxx pré> L'auteur n'a expliqué aucune chose à propos de la syntaxe, alors je ne sais pas où est l'erreur ici p> p>
3 Réponses :
mauvaise utilisation de espaces em> et l'indentation em> 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: Si vous voulez utiliser le style du tutoriel, ce que vous devez faire est : p> essentiellement, placez un espace devant chaque ligne et il devrait résoudre le problème. p> p> CreateMail REC BARTHT Auth = TOPART REC ++ BodyPart Bookt ++ FuPart Auth CODE> P>
Haskell s'appuie sur l'indentation afin que nous devions le réparer un peu:
Petit Nitpick: Strictement Parlant Haskell ne "net s'appuyer" sur l'indentation. Vous pouvez tout écrire avec { code> et
} code> autour des blocs de code et
; code> 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.
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)
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 I> Ce code bloque répond à la question. Cela aide à fournir un contexte et rend votre réponse beaucoup plus utile aux futurs lecteurs.
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 Code> 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