Text.PrettyPrint: отступ начинается с левого поля

Я пытаюсь сгенерировать 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
};

?

8
задан Cactus 15 March 2012 в 02:43
поделиться