RosettaCodeData/Task/Flatten-a-list/Common-Lisp/flatten-a-list-5.lisp
2014-01-17 05:34:36 +00:00

8 lines
285 B
Common Lisp

(defun flatten (obj)
(do* ((result (list obj))
(node result))
((null node) (delete nil result))
(cond ((consp (car node))
(when (cdar node) (push (cdar node) (cdr node)))
(setf (car node) (caar node)))
(t (setf node (cdr node))))))