(defun rpn-2 (stream &optional stack) (let ((x (read stream nil nil))) (when x (if (numberp x) (push x stack) (let ((a (pop stack)) (b (pop stack))) (push (funcall x b a) stack)))) (format t "~&~a" stack) (if x (rpn-2 stream stack) stack))) (rpn-2 *standard-input*)