展示该行为的简短示例
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* 绑定为真时像 pr 一样显示所有元数据,那将会很棒。