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
...