Ответ 1
Сохраняя main = putStrLn "🥓 🥐 🥒 🥔"
как UTF-8 и запуская его с ghc 8.0.1
на macOS, я получил:
lexical error in string/character literal at character '\129365'
Я нашел этот связанный (но закрытый) отчет об ошибке ghc:
Причиной (для обеих проблем) было то, что более старые версии GHC поддерживают более старую версию Unicode:
$ ghc-7.0.3 -e "Data.Char.generalCategory '\8342'" NotAssigned
Таким образом, проблема заключается в том, что версия ghc, которую мы используем, еще не поддерживает новую эмуляцию - она считает, что кодовая точка unicode не назначена и ошибки, даже если она назначена emoji в более новых версиях unicode.
Связанный открытый пробег ghc, который в основном обсуждает, какие символы пробелов разрешены, хотя.
Наконец, функция lit_error
в Lexer.x
кажется, где ошибка всплывает. В этом файле есть несколько функций, которые вызывают эту ошибку, поэтому не уверены, откуда она происходит...