Plaster

common-lisp
(let ((dat nil)) (flet ((add (item) (if (consp dat) (setf (cdr (loop for cons on dat when (eq (cdr cons) dat) return cons)) (list* item dat)) (setf dat (let ((L (list item))) (nconc L L)))))) (add 1) (add 2) (add 3) dat))