wl-pprint包中vcat中的一个额外空行

时间:2012-06-18 13:33:33

标签: haskell pretty-print

我使用wl-pprint包,因为标准的PrettyPrinter缺乏功能。一切都很好,除了vcat函数中的空文档(与<$>组合子相同)。

正确行为:

import Text.PrettyPrint
> vcat[text "a", empty, text "b"]   
a
b

wl-pprint显示了一个额外的空行:

import Text.PrettyPrint.Leijen
> vcat[text "a", empty, text "b"]   
a

b

那我该怎么办?过滤vcat列表是不可能的,因为Eq没有Doc个实例。

2 个答案:

答案 0 :(得分:0)

定义 vcatSoft = fold <//>

docs说“文档(vcat xs)将所有文档与xs垂直连接()。”,并查看<$$>,它说“将文档x和y连接到一个换行符”之间。”但请注意下一个函数<//>,它使用softbreak代替。看一下vcat的defn,它只是vcat = fold <$$>,所以定义一个函数= fold <//>

答案 1 :(得分:0)

因为我没有更好的想法,所以我在源代码中进行了以下更改

(<$$>) :: Doc -> Doc -> Doc
x <$$> Empty    = x                   -- <<< added
Empty <$$> y    = y                   -- <<< added
x <$$> y        = x <> linebreak <> y