По сути, Haskell отмечает столбец, где появляется первый непробельный символ после where
(в данном случае c
из convert
), и обрабатывает следующие строки, начинающиеся в этом столбце, как новые определения внутри where
.
Строка, которая продолжает определение предыдущей строки (например, ваши |
охранники), должна иметь отступ справа от первого непробельного символа (c
в вашем коде).
Строка с отступом слева от c
будет за пределами where
(например, начало вашей следующей функции верхнего уровня).
Это столбец первого символа, следующего за where
, который имеет решающее значение, даже если он находится на новой строке:
where
convert acc x
| ...
anotherFunction x y
^