欢迎!请查阅关于页面了解这个平台的更多详细信息。
关于元数据的文档https://clojure.org/reference/metadata中有一句让人困惑的话,我认为它是语法上有误的。
这句话是:这个结果之一是,将元数据应用于一个懒序列将实现序列的头部,以便两个对象可以共享同一个序列。
请有人用正确的语法定义第三段的第二句的意思吗?
这两个问题中的对象(都是)指什么,以及这两个对象之间共享哪个序列?
由于这句话含糊不清,我并不完全确定它的意思。但这是我对这句话更正的尝试。请随时纠正我的错误更正。
话虽如此,元数据和它与对象A之间的关系是不可变的——具有不同元数据的对象B是不同的对象。这个结果之一是,如果A是一个懒序列,则将元数据应用于A将实现序列的头部,以便对象A和B可以共享相同的元数据。
更多讨论可以在以下链接中找到https://clojurians.slack.com/archives/C03S1KBA2/p1625827141061700
在“序列”一词的使用上存在冲突,该词指代不同的事物。一个微小的实验表明,它的意思是“……这样两个对象可以共享同一个尾部”。
clj꞉user꞉> (def A (map inc (range))) #'user/A clj꞉user꞉> (def B (with-meta A {:foo "baz"})) #'user/B clj꞉user꞉> (identical? A B) false clj꞉user꞉> (identical? (rest A) (rest B)) true