欢迎!请参阅关于页了解此功能的工作方式。
将元数据应用于lazy-seq会导致实现化
(def x (vary-meta (lazy-seq (prn :realized)) assoc :foo :bar)) :realized
这可能令人惊讶,因此修改lazy-seq的docstring来提及其内容。
补丁
评论者:alexmiller
我认为这里很可能调用了seq(),这样旧的LazySeq实例和新的实例就可以共享序列。否则,元数据前的和元数据后的版本将在相同的输入上执行相同的函数调用,但将断开连接,这似乎不好。
我真的不确定应该在何处记录这些信息。也许在https://clojure.org/metadata页面?
评论者:mpenet
是的,这很有意义,并且在lazy-seq的docstring中也是如此。
我在元数据页面上添加了一句句子,并将描述更新为更适用于此处的一个文档字符串更改。
评论者:michaelblume
在这个补丁中,with-meta不会实现seq,但实现仍然只发生一次 — 这种方法是否可以接受?
添加测试