我怎样才能在Clojure中懒散地“克隆”seq。
的内容(let [[s1 s2] (clone-seq s)]
...)
这样s1和s2是由s?
支持的独立seqs答案 0 :(得分:9)
“克隆”seq对我来说感觉不对:在正常的Clojure使用中你会期望seqs是不可变的,所以完全可以做到这样的事情:
(let [s1 s
s2 s]
.....)
如果你的seqs是可变的或在遍历时有某种副作用,那么你可能会因为不同的原因而遇到问题:可变的seqs往往不适合像Clojure这样的函数式语言。您将遇到各种奇怪的问题:例如,当您“克隆”seq时,您是否希望副作用发生两次?你是否还需要对所有内容进行深度克隆?