Macros Clojure#=读卡器宏

Macros Clojure#=读卡器宏,macros,clojure,Macros,Clojure,我刚刚从一个on-Stackoverflow中“发现”了#=读卡器宏 它解决了一个问题。此读卡器宏成为 语言的官方(记录)部分?不推荐的或者 改变行为 #=读卡器宏导致Lisp读卡器对以下s表达式求值(在宏扩展之前)。当使用*print dup*true打印某些内容时,核心语言会使用它,因此我敢打赌它将保持不变。不知道为什么没有记录 user=> (binding [*print-dup* true] (prn {:foo 1 :bar 2})) #=(clojure.lang.Persi

我刚刚从一个on-Stackoverflow中“发现”了
#=
读卡器宏 它解决了一个问题。此读卡器宏成为 语言的官方(记录)部分?不推荐的或者 改变行为


#=
读卡器宏导致Lisp读卡器对以下s表达式求值(在宏扩展之前)。

当使用*print dup*true打印某些内容时,核心语言会使用它,因此我敢打赌它将保持不变。不知道为什么没有记录

user=> (binding [*print-dup* true] (prn {:foo 1 :bar 2}))
#=(clojure.lang.PersistentArrayMap/create {:foo 1, :bar 2})
nil

它没有被记录下来,因为它可能会消失/被其他东西取代。我不建议在您的程序中使用它。

谢谢。我还想知道为什么没有记录下来。在宏中,在宏展开之前对子表达式求值非常有用。