欢迎!请查看关于页面以了解该工作的更多信息。
关于元数据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