Char
- это тип символов Unicode в Haskell, а String
- просто [Char]
(т.е. список элементов Char
). Вот простой код:
main = putStrLn "©" -- Unicode string
Этот код компилируется отлично, но я получаю исключение во время выполнения, когда запускаю его в файле PowerShel.exe или cmd.exe:
app.exe:: commitBuffer: недопустимый аргумент (недопустимый символ)
Почему это происходит? Как ни странно, когда я делаю то же самое в С#, я не получаю исключения:
Console.WriteLine("©");
В .NET символы тоже Unicode. PowerShell или cmd печатает c
вместо ©
, но по крайней мере я получаю не исключение. Как я могу заставить исполняемый файл Haskell работать плавно?