Common Lisp Library for Pretty Printing?例如漂亮打印嵌套哈希表

时间:2014-04-06 19:36:50

标签: common-lisp

我是普通lisp的新手。在我的案例中,是否有一个CL库来打印集合,嵌套哈希表?

3 个答案:

答案 0 :(得分:3)

首先,CL没有“集合”类型。

其次,如果将*print-array*设置为t,一些(大多数?)CL实现将打印包含内容的哈希表。

第三,如果你的CL实现没有这样做,你可以根据hash-table->alist轻松鞭打自己的。

答案 1 :(得分:3)

如果您考虑自己编写,请使用print-object作为起点。它不是独立实现的,但至少在LispWorks和SBCL中起作用。

(defmethod print-object ((object hash-table) stream)
  (format stream "#HASH{~{~{(~a : ~a)~}~^ ~}}"
          (loop for key being the hash-keys of object
                using (hash-value value)
                collect (list key value))))

答案 2 :(得分:1)

使用Rutils库:

如果我们使用(toggle-print-hash-table)启用漂亮的哈希表打印,则它们的打印方式如下:

rutils-user> #h(:foo 42)
#{
  :FOO 42
 } 

它在引擎盖下使用print-object,因此它的警告适用(不是标准的,但在诸如SBCL的某些实现中有效)。

#h阅读器宏是创建哈希表的快捷方式。