(mac w/collect body `(rev:accum collect ,@body))
(mac w/collect body (w/uniq (hd tl) `(let (,hd ,tl collect) nil (= collect (fn (x) (if hd (do (= (cdr tl) (cons x nil)) (= tl (cdr tl))) (do (= hd (cons x nil)) (= tl hd))) x)) ,@body ,hd)))