该行为的一个简短示例
user=> *clojure-version*
{:major 1, :minor 6, :incremental 0, :qualifier nil}
user=> (def f1 '(defn foo [^Integer x] ^{:bar 8} (inc x)))
#'user/f1
;; pr 显示所有元数据,如预期
user=> (binding [*print-meta* true] (pr f1))
^{:line 2, :column 10} (defn foo [^Integer x] ^{:bar 8, :line 2, :column 33} (inc x))nil
;; pprint 显示一些元数据,但不显示所有
user=> (binding [*print-meta* true] (clojure.pprint/pprint f1))
(defn foo [^Integer x] (inc x))
nil
我尚未深入细节,但看起来这可能是因为 pprint 使用 pr 来显示符号,但不显示集合。因此,pprint 在符号上显示元数据,但在集合上不显示。
如果 pprint 能够在 *print-meta* 被绑定为 true 时像 pr 一样显示所有元数据,那将很棒。