J'ai triché avec l'indentation sur ceci pendant un moment maintenant, mais cela me semble correct. Quelqu'un peut-il voir où je vais mal?"Indentation peut-être incorrecte" dans la déclaration de cas Haskell
deposit :: NodeType -> NodeType -> Amount -> Node
deposit (Income income) (Account bal grow) amount =
Account (bal + transfer) grow where transfer = case amount of
AbsoluteAmount amount -> min income amount -- This is line 34
RelativeAmount percent -> (min 1.0 percent) * income
Le message d'erreur que je reçois est:
Prelude> :load BudgetFlow.hs
[1 of 1] Compiling Main (BudgetFlow.hs, interpreted)
BudgetFlow.hs:34:5: parse error (possibly incorrect indentation)
Failed, modules loaded: none.
Ligne 34 (la ligne avec l'erreur d'analyse syntaxique) est la ligne qui commence AbsoluteAmount
(je l'ai marqué avec un commentaire ci-dessus). J'ai essayé de mettre l'instruction case
sur sa propre ligne et de mettre les deux cas entièrement en retrait à droite du mot-clé of
, mais le message d'erreur est toujours le même. Merci beaucoup pour toute aide!
C'est fait. Merci beaucoup! –
Pour être précis: le bloc introduit par 'case' doit être plus profondément indenté que le bloc introduit par' where'. Toute modification qui satisfait ce critère fonctionnera - le 'where' n'est pas demandé pour être seul sur une ligne. –