在Clojure中克隆seq

时间:2012-12-05 13:59:35

标签: clojure seq

我怎样才能在Clojure中懒散地“克隆”seq。

的内容
(let [[s1 s2] (clone-seq s)]
 ...)

这样s1和s2是由s?

支持的独立seqs

1 个答案:

答案 0 :(得分:9)

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

(let [s1 s
      s2 s]
   .....)

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