Donc, je commence tout juste à m'enseigner Haskell hors du livre Real World Haskell, et au cours de faire l'un des exercices, j'ai écrit ce qui suit Code:Haskell: erreur d'analyse avec 'où' et un gardien
step acc ch | isDigit ch = if res < acc
then error "asInt_fold: \
\result overflowed"
else res
where res = 10 * acc + (digitToInt ch)
| otherwise = error ("asInt_fold: \
\not a digit " ++ (show ch))
Quand je chargé dans GHCi 6.6, je suis l'erreur suivante:
IntParse.hs:12:12: parse error on input `|'
Failed, modules loaded: none.
Je suis pratiquement certain que l'erreur est due à l'interaction de la clause "where" et la garde subséquente; commenter le garde l'élimine, tout comme remplacer la clause "where" par une clause "let" équivalente. Je suis également assez sûr que je dois avoir déchiré l'indentation d'une manière ou d'une autre, mais je ne sais pas comment.
Merci d'avance pour tout conseils.