Как установить ширину страницы в Haskell с помощью библиотеки ansi-wl-pprint? - PullRequest
2 голосов
/ 09 ноября 2010

В настоящее время я использую библиотеку ansi-wl-pprint.Функция ширины недокументирована, но мне нужно установить ее так, чтобы ширина страницы составляла 80 символов вместо 100 по умолчанию.

Как это сделать?Функция width принимает Doc в качестве первого аргумента, а затем функцию из Int -> Doc в качестве второго аргумента.Нет никаких инструкций относительно того, для чего предназначена эта функция.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Глядя на определение функций fill и width, кажется, что второй аргумент width вызывается с шириной его первого аргумента и создает документ соответственно.

fill :: Int -> Doc -> Doc
fill f d = width d (\w ->
                  if (w >= f) then empty
                              else text (spaces (f - w)))

width :: Doc -> (Int -> Doc) -> Doc
width d f = column (\k1 -> d <> column (\k2 -> f (k2 - k1)))
1 голос
/ 09 ноября 2010

Если ansi-wl-pprint следует за wl-pprint, вы хотите использовать функцию renderPretty для рендеринга документа на другую ширину и, возможно, использовать другую дробь ленты (здесь 0,7), что-то вроде этого должно работать:

show100 :: Doc -> String
show100 d = displayS (renderPretty 0.7 100 d) ""

См. Последний раздел руководства на старом сайте Даана Лейджена:

http://legacy.cs.uu.nl/daan/download/pprint/pprint.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...