在Clojure中克隆seq

Rob*_*low 4 clojure seq

我如何懒惰地"克隆"Clojure中的seq.有点像

(let [[s1 s2] (clone-seq s)]
 ...)
Run Code Online (Sandbox Code Playgroud)

这样s1和s2是由s支持的独立seqs?

mik*_*era 9

"克隆"一个seq对我来说感觉不对:在正常的Clojure使用中你会期望seqs是不可变的,所以完全可以做到这样的事情:

(let [s1 s
      s2 s]
   .....)
Run Code Online (Sandbox Code Playgroud)

如果你的seqs是可变的或者在遍历时有某种副作用,那么你可能会因为不同的原因而遇到问题:可变的seqs往往不适合像Clojure这样的函数式语言.您将遇到各种奇怪的问题:例如,当您"克隆"seq时,您是否希望副作用发生两次?你还需要深度克隆所有内容吗?