欢迎!请查看关于页面以获取更多有关如何使用本网站的信息。
错误报告
(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。
clojure.pprint/pprint