Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Вывод кириллицы в GHCi

source: http://edu.mmcs.sfedu.ru/mod/page/view.php?id=16778
author: Vitaly Bragilevsky

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

Для того, чтобы в консоли 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, что позволяет видеть кириллицу, а заодно и любые юникодные символы (разумеется, при наличии шрифтов) без изменений.

@alogic0

This comment has been minimized.

Copy link
Owner Author

@alogic0 alogic0 commented Aug 11, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment