Итак, я только начинаю учить себя Haskell из книги Real World Haskell , и в ходе выполнения одного из упражнений я написал следующий код:
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))
Когда я загрузил его в GHCi 6.6, я получил следующую ошибку:
IntParse.hs:12:12: parse error on input `|'
Failed, modules loaded: none.
Я практически уверен, что ошибка связана с взаимодействием предложения where и последующей защиты; комментирование защиты исключает его, равно как и замена предложения where эквивалентным предложением let. Я также почти уверен, что, должно быть, каким-то образом исказил отступ, но не могу разобраться, как.
Заранее благодарим за любые советы.