Haskell не поддерживает конструктор символов Unicode (например: ◁)? - PullRequest
2 голосов
/ 26 марта 2019

Например:

{-# LANGUAGE UnicodeSyntax #-}

data Symbolic n
  = Constant n
  | Variable String
  | Symbolic n :+ Symbolic n
  | Symbolic n :* Symbolic n
  | Symbolic n :◁ Symbolic n
  deriving (Show)

Этот код успешно загружен в GHCi.

Затем я ввожу:

Constant 2 :* Variable "a"

Всё в порядке.

Но когда я ввожу:

Constant 2 :◁ Variable "a"

*** Исключение:: hPutChar: недопустимый аргумент (недопустимый символ)

Значит ли это, что Haskell не поддерживает конструктор символов Unicode?

Как заставить его поддерживать конструктор символов Unicode?

Окружающая среда: GHCi 8.6.3 (WinGHCi) Windows 7

Спасибо.

Новое наблюдение:

Работает, когда source появился в исходном файле, но вы не можете ввести ◁ в REPL (я использую WinGHCi).

1 Ответ

4 голосов
/ 26 марта 2019

Проблема не в вашем коде или конструкторах, а просто в том, что ваша среда не настроена так, что Haskell может печатать символы Юникода. Попробуйте

Prelude> putStrLn "\9731"

и вы должны увидеть ту же проблему.

Я не эксперт по Unicode и Windows, но, вероятно, вы можете это исправить, установив переменную окружения LANG=C.utf8 или аналогичную.

...