如何使用ansi-wl-pprint库在Haskell中设置“页面宽度”?

时间:2010-11-09 13:04:30

标签: text haskell

我目前正在使用ansi-wl-pprint库。 width函数没有记录,但是我需要设置它以使页面的宽度为80个字符而不是默认的100个。

我该怎么做?函数宽度接受Doc作为其第一个参数,然后接受来自Int - >的函数。 Doc作为第二个参数。没有关于此功能的用途的说明。

2 个答案:

答案 0 :(得分:2)

查看fillwidth函数的definitionwidth的第二个参数似乎是以第一个arg的宽度调用并生成一个文档相应

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 :(得分:1)

如果ansi-wl-pprint遵循wl-pprint,你想使用renderPretty函数将Doc渲染到不同的宽度,并可能使用不同的ribbon-fraction(这里是0.7),这样的东西应该可以工作:

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

请参阅Daan Leijen旧网站手册的最后一部分:

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