2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多关于此如何工作的信息。

0
文档

将元数据应用于lazy-seq会导致实现

(def x (vary-meta (lazy-seq (prn :realized)) assoc :foo :bar)) :realized

这可能让人感到惊讶,因此修改lazy-seq的文档来说明此事。

补丁

7 个答案

0

评论由:alexmiller

我认为这里调用seq()的可能性很大,这样旧的LazySeq实例和新的LazySeq实例可以共享序列。否则,在元数据前后版本将执行相同的函数调用,但各自独立,这看起来不好。

0

评论由:alexmiller

我不太确定应该在何处进行文档记录。也许可以在https://clojure.org/metadata页面上记录?

0

评论由:mpenet

是的,这很有意义,并且在lazy-seq的文档字符串中也应该这样做。

0

评论由:alexmiller

我在元数据页面中增加了一句句子,并更新了描述,使其更适用于这里的文档字符串更改。

0
by

评论者:michaelblume

在这个补丁中,with-meta 不实现 seq,但实现仍然只发生一次 — 这是否是一种可接受的方法?

0
by

评论者:michaelblume

添加了测试

0
by
参考: https://clojure.atlassian.net/browse/CLJ-1800(由 mpenet 报告)
...