欢迎!有关如何操作的更多信息,请参阅关于页面。
将元数据应用于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,但实现仍然只发生一次--这个方法是否可接受?
添加测试