Plaster

common-lisp
(defun flatten (tree) "Traverses TREE in order, collecting non-null leaves into a list." (do ((result '()) (remaining (list tree))) ((null remaining) result) (typecase (car remaining) (null (pop remaining)) (atom (rotatef (cdr remaining) result remaining)) (cons (setf remaining (list* (cdar remaining) (caar remaining) (cdr remaining)))))))