欢迎!请参阅关于页面了解有关此工作的更多信息。
错误报告
(defn f [] 1) => #'cljs.user/f (= f (with-meta f {:a 1})) => false ;; should be true
关于:https://clojure.org/reference/metadata"元数据不会影响等价性"
页面也说“只有元数据不同的两个对象是相等的”以及“具有不同元数据的对象是不同的对象”。
因此,当它依赖于对象标识时,等价性确实“受到影响”。例如,对于编译函数:`(not= (fn []) (fn []))`无论元数据如何。
可能需要澄清。
我认为这不是一个错误。它的行为与JVM Clojure相同。
函数没有值语义,所以它们的 = 实现将回退到对象的引用比较。
=
当您向函数添加元数据时,它将变成一个不同的函数对象,因此 = 返回 false。