Ваш отступ, вероятно, испорчен из-за смешанных пробелов и пробелов. На самом деле в вашем фрагменте кода, похоже, есть нечетная вкладка, которую, я полагаю, вы вставили непосредственно из исходного файла.
Скорее всего, GHC интерпретирует вкладки иначе, чем их отображает ваш редактор, поэтому считает, что блок do
заканчивается после рассматриваемой строки.
Как правило, в Haskell лучше использовать только пробелы. Язык определяет очень специфические правила для интерпретации вкладок, с которыми большинство редакторов кода не согласны, но пробелы однозначны и последовательны.