如何编写自定义漂亮的打印机

Set*_*jmp 11 algorithm pretty-print

在我的职业生涯中经常遇到的一个问题是我有某种数据结构(可能是一个s表达式),我想用一个人类可读的形式打印出来,并且有合理的缩进选择.

是否有书籍或博客条目描述如何优雅地做到这一点?我对算法比对特定库感兴趣.

dsm*_*dsm 15

S-Exps相当于树形结构,如果你可以漂亮地打印树,你可以漂亮地打印一个s-exp.

例如,比较:

(tree
    (value 89)
    (tree
        (value 9)
        nil
        nil)
    (tree
        (value 456)
        nil
        nil))
Run Code Online (Sandbox Code Playgroud)

至:

89
 +- 9
 +- 456
Run Code Online (Sandbox Code Playgroud)

算法是相同的,唯一的区别是您要打印的周围数据的数量.

本文描述了一种用于漂亮打印树的算法

这个描述了一个用于编程语言的漂亮打印机