我正在尝试使用Text.PrettyPrint
生成Javascript。问题在于nest
与另一个打印的元素相邻时会产生巨大的缩进。例如,在这样的代码:在第9栏第Text.PrettyPrint:从左边距开始缩进
import Text.PrettyPrint
fun :: Doc
fun = vcat [ text "function" <+> lbrace
, nest 4 $ vcat $ replicate 5 $ text "// foo"
, rbrace
]
var :: Doc
var = text "var" <+> text "x"
test :: Doc
test = var <+> equals <+> fun <> semi
fun
开始于test
(因为var <+> equals <> empty
到它的左侧),因此,它的随后的线被9 + 4 = 13列缩进:
var x = function {
// foo
// foo
// foo
// foo
// foo
};
有没有一种方法来呈现从左边距缺口,因此,上述将被代替呈现为
var x = function {
// foo
// foo
// foo
// foo
// foo
};
?
Daan Leijen漂亮的打印机'wl-pprint'比Hughes Peyton-Jones漂亮的打印机具有更灵活的缩进处理。您可能需要考虑使用它。有关文档,请参阅手册,它比Haddock文档更详细。 – 2012-03-15 09:06:14
我认为'wl-pprint'将会变成正确的解决方案 - 我已经准备好接受这个作为答案,如果你这样发布的话。 – Cactus 2012-03-18 12:53:55
@Cactus你有没有使用'wl-pprint'工作?如果是这样,为什么不添加一个答案呢? – Alec 2016-12-29 04:46:53