(defun visit-in-order-helper (value visitor post-visited) (funcall visitor value) (when post-visited (funcall (caar post-visited) (cdar post-visited) visitor (cdr post-visited)))) (defun visit-in-order-2 (node visitor &optional post-visited) (cond (node (visit-in-order-2 (node-left node) visitor (list* (cons #'visit-in-order-helper (node-value node)) (cons #'visit-in-order-2 (node-right node)) post-visited))) (post-visited (funcall (caar post-visited) (cdar post-visited) visitor (cdr post-visited)))))