我职业生涯中经常遇到的一个问题是我有某种数据结构(可能是一个s表达式),我希望以人类可读的形式打印出来,并且有合理的缩进选择。
是否有书籍或博客条目描述如何优雅地执行此操作?我对算法感兴趣而不是特定的库。
答案 0 :(得分:14)
S-Exps相当于树形结构,如果你可以漂亮地打印一棵树,你可以漂亮地打印一个s-exp。
例如,比较:
(tree
(value 89)
(tree
(value 9)
nil
nil)
(tree
(value 456)
nil
nil))
为:
89
+- 9
+- 456
算法完全相同,唯一的区别是您要打印的周围数据的数量。
This paper描述了一种用于漂亮打印树的算法
This one描述了一种用于编程语言的漂亮打印机