Вывод кириллицы в GHCi

Для того, чтобы в консоли GHCi нормально отображалась кириллица, можно сделать следующее (при условии, что установлена Haskell Platform):

  1. Установить пакет wl-pprint:

    cabal install unescaping-print
  2. Создать в домашнем каталоге файл .ghci (расположение) со следующим содержимым:

    :set -interactive-print=UnescapingPrint.uprint
  3. Теперь можно пользоваться интерпретатором ghci с поддержкой кириллицы:
    $ ghci
    GHCi, version 8.4.3: http://www.haskell.org/ghc/  :? for help
    Loaded GHCi configuration from /home/bravit/.ghci
    Prelude> "Привет, мир"
    "Привет, мир"

Полезно понимать причины поведения интерпретатора по умолчанию: вывод значений выражений выполняется функцией print, которая вызывает для своего аргумента функцию show. Последняя была определена более 20 лет назад и с тех пор практически не менялась, она заменяет любые не-ASCII символы на их коды. В предлагаемом решении мы фактически подменяем функцию print в ghci, что позволяет видеть кириллицу, а заодно и любые юникодные символы (разумеется, при наличии шрифтов) без изменений.

Последнее изменение: Saturday, 9 February 2019, 09:03