Я пытаюсь сгенерировать Javascript, используя Text.PrettyPrint
. Проблема в том, что nest
создает огромные отступы, когда помещается рядом с другим красиво напечатанным элементом. Например, в этом коде:
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
начинается со столбца 9 в test
(поскольку var <+> равно <> empty
слева от него), и, таким образом, его последующие строки имеют отступ в 9+4=13 столбцов:
var x = function {
// foo
// foo
// foo
// foo
// foo
};
Есть ли способ отображать отступы от левого поля, чтобы приведенное выше вместо этого отображалось как
var x = function {
// foo
// foo
// foo
// foo
// foo
};
?