Iterator i; while (i.hasNext()) { i.next(); }
Node next = root; while( next != null ) next = next.next;
클로저에서 반복자에 해당하는 것
(seq [1 2 3]) => (1 2 3) (seq (list 4 5 6)) => (4 5 6) (seq #{ 7 8 9}) => (7 8 9) (seq (int-array 3)) => (0 0 0) (seq "abc") => (\a \b \c)
시퀀스인가? 반복자는 단순 시퀀스이다.
(first (seq [1 2 3])) ; 1 (rest (seq [1 2 3])) ; (2 3)시퀀스가 아닌 것으로도 이렇게 돌아다닐 수 있나? 클로저는 자바다. 인터페이스를 구현하면 된다.
(deftype RedGreenBlackTree [& elems]
clojure.lang.Seqable
(seq [self]
;; traverse element in needed order
))
내 생각에는 그냥 죄다 시퀀스로 쓰면 될 것 같다.
댓글 없음:
댓글 쓰기