*говно *haskellОказывается, если тупо заменить все табы на два пробела в .hs, то начинаются чудеса аски-арта: код под let и do надо выравнивать точно по уровню кода после let/do на предыдущей строке, иначе еррор. Пример:
let xkey = array (0, 3) [(0, k1), (1, k2), (2, k3), (3, k4)];
w32s = listFromOctets os in
listToOctets $ decrypt' xkey w32s
->
let xkey = array (0, 3) [(0, k1), (1, k2), (2, k3), (3, k4)]
w32s = listFromOctets os in
listToOctets $ decrypt' xkey w32s
Вот отчего, оказывается, все хаскель-пробелоебы такие отступы городят.