请在你认为合适的2024年Clojure调查问卷中分享你的想法!

欢迎!请查阅关于页面了解这个平台的更多详细信息。

0
元数据
编辑

关于元数据的文档https://clojure.org/reference/metadata中有一句让人困惑的话,我认为它是语法上有误的。

这句话是:这个结果之一是,将元数据应用于一个懒序列将实现序列的头部,以便两个对象可以共享同一个序列。

请有人用正确的语法定义第三段的第二句的意思吗?

这两个问题中的对象(都是)指什么,以及这两个对象之间共享哪个序列?

由于这句话含糊不清,我并不完全确定它的意思。但这是我对这句话更正的尝试。请随时纠正我的错误更正。

话虽如此,元数据和它与对象A之间的关系是不可变的——具有不同元数据的对象B是不同的对象。这个结果之一是,如果A是一个懒序列,则将元数据应用于A将实现序列的头部,以便对象A和B可以共享相同的元数据。

更多讨论可以在以下链接中找到https://clojurians.slack.com/archives/C03S1KBA2/p1625827141061700

1 答案

0

在“序列”一词的使用上存在冲突,该词指代不同的事物。一个微小的实验表明,它的意思是“……这样两个对象可以共享同一个尾部”。

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
我们如何在文档中解决这个问题呢?
Clojure网站的问题/prs应提交至https://github.com/clojure/clojure-site/issues
...