Хотя стандарт Haskell просто говорит, что Unicode представляет собой набор возможных символов (в отличие, например, от ASCII или Latin-1), он не определяет, какой из нескольких различных кодировок (UTF8, UTF16, UTF32, порядок байтов) использовать.
Алекс, лексер, который поставляется с платформой Haskell, требует, чтобы его ввод был в кодировке UTF8 *, поэтому вы видите код, который вы упоминаете. На практике я думаю, что все основные реализации Haskell требуют, чтобы источник был в UTF8.
* - На самом деле это реальная проблема, поскольку GHC хранит строки и, что более важно, Data.Text
внутри, как UTF16. Было бы неплохо иметь возможность напрямую их лексировать, а не конвертировать туда и обратно.