3
我想使用Haskell漂亮軟件包打印出AST。如何使用Haskell漂亮打印分層嵌套縮進
它一切正常,但嵌套結構不會正確縮進。
我做這樣的事情:
draw :: Pretty a => a -> String
draw = render.pretty
pretty (Letin d c) = text "let" <+> text (draw d) $$
nest 4 (text "in" <+> text (draw c))
但結果是這樣的:
let Const x := 2
in let Var y := Int
in y = 3; let Var z := Int
in z = 0; z = z + 1
看來,鳥巢水平不被繼承,因此,所有都在+4保證金絕對,而不是在每個級別連續縮進,即相對於其父級的+4,即當前縮進級別。
是的遞歸。我忽略了平局的定義;在上面加上,應該和你想象的一樣。我的錯誤是在使用render.pretty的「text(draw e)」上遞歸,而不是直接在「pretty e」上。雖然我不確定爲什麼會打破它......謝謝! – guthrie 2011-04-22 12:50:42