使用深度的下列遞歸定義第一搜索的Clojure(JVM)和ClojureScript REPL產生兩個不同的輸出,其中節點被印刷即順序(與兩個瀏覽器連接REPL和LUMO測試)是不同的,並且Clojure的REPL產生一個重複:f
。 ClojureScript順序是我期望的行爲。爲什麼是這樣?的Clojure和ClojureScript REPL產生不同的輸出
代碼:
(defn dfs
([g v] (dfs g v #{}))
([g v seen]
(println v)
(let [seen (conj seen v)]
(for [n (v g)]
(if-not (contains? seen n)
(dfs g n seen))))))
(def graph {:a [:b :c :e]
:b [:d :f]
:c [:g]})
(dfs graph :a)
Cloure REPL輸出:
:a
:b
:c
:e
:d
:f
:g
:f
;; => ((()()) (()) (()))
CLojureScript REPL輸出:
:a
:b
:d
:f
:c
:g
:e
;; => ((()()) (())())
在clojure 1.8和1.9-alpha14中,我最終沒有得到':f',而我的parens與您的cljs parens完全相同。 – Josh
這很奇怪,我使用Clojure 1.8.0和ClojureScript 1.9.229。 – mac