如何在4clojure中使用clojure.zip

时间:2016-10-20 02:40:56

标签: clojure

我使用了跟随代码来解决4clojure中的树重新托管问题,但答案是不需要clojure.zip命名空间,在未修改我的代码的情况下,我该如何传递它?

(fn gen-tree
  [nr tree]
  (let [zp (clojure.zip/seq-zip tree)
        pnodes (:pnodes (second
                          (first
                            (filter
                              (fn [[nd :as loc]]
                                (= nr nd))
                              (iterate clojure.zip/next zp)))))]
    (reduce (fn [rs e]
              (concat e (list (remove #(= e %) rs))))
            pnodes)))

1 个答案:

答案 0 :(得分:0)

你不能。 4clojure上的用户代码不允许加载名称空间。

除此之外:由于例如Why does reduce give a StackOverflowError in Clojure?中显示的reduce / concat问题,您的代码将因足够大的输入而失败。