source: http://edu.mmcs.sfedu.ru/mod/page/view.php?id=16778
author: Vitaly Bragilevsky
Для того, чтобы в консоли GHCi нормально отображалась кириллица, можно сделать следующее (при условии, что установлена Haskell Platform):
Установить пакет wl-pprint:
cabal install wl-pprint
Создать в домашнем каталоге файл .ghci (расположение) со следующим содержимым:
import System.IO
import Text.PrettyPrint.Leijen
upprint a = (hPutDoc stdout . pretty) a >> putStrLn ""
:set -interactive-print=upprint
Если не нравится получающееся в результате длинное приглашение к вводу (с именами загруженных модулей), можно дополнительно приписать к .ghci:
:set prompt "ghci> "
Теперь можно пользоваться интерпретатором ghci с поддержкой кириллицы:
$ ghci
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/bravit/.ghci
ghci> "Привет, мир"
Привет, мир
ghci>
Полезно понимать причины поведения интерпретатора по умолчанию: вывод значений выражений выполняется функцией print
, которая вызывает для своего аргумента функцию show
. Последняя была определена более 20 лет назад и с тех пор практически не менялась, она заменяет любые не-ASCII символы на их коды. В предлагаемом решении мы фактически подменяем функцию print
в ghci, что позволяет видеть кириллицу, а заодно и любые юникодные символы (разумеется, при наличии шрифтов) без изменений.
Another setting of
prompt
::set prompt "%w %call(D:/shonfinkel/msys64/usr/bin/date +%H:%M:%S)%s\n> "
or just:
:set prompt "%s\n> "
to see all imports.