Clojure for . dfs REPL, , .. ((() ()) (()) ()). (do (dfs graph :a) nil), :a.
Clojure 32 . , REPL ( str) for ( :b), seq , :c :e , ( ).
, Clojurescript (LazySeq IChunkedSeq) , , , .
- (first (for [i (range 300)] (do (println "printing:" i) i))) REPL Clojure, CLJS - 32 , Clojure, CLJS.
, doseq for for doall.
, .
: , @Josh, :f :f Clojure 1.8, parens cljs - ...
, , DFS. , i. . , doseq, , :
(defn dfs-eager
([g v] (dfs-eager g v
([g v seen]
(println v)
(let [seen (conj seen v)]
(doseq [n (v g)]
(if-not (contains? seen n)
(dfs-eager g n seen))))))
, , . , for, , :
(defn dfs-lazy
([g v] (dfs-lazy g v #{}))
([g v seen]
(cons v
(let [seen (conj seen v)]
(for [n (v g)]
(if-not (contains? seen n)
(dfs-lazy g n seen)))))))
(:a (:b (:d) (:f)) (:c (:g)) (:e)) - , . .