(defmacro rpn (body) (rpn-expander body)) (defun rpn-expander (body) (mapcar (lambda (x) (if (listp x) (rpn-expander x) x)) (reverse body))) (rpn ((2 1 +) 2 *)) ; => 6 #| Just a quick stub. One could easily improve #'RPN-EXPANDER in order to better suit one's needs. |#