(defun rpn (stream) (let ((stack nil)) (loop for x = (read stream nil nil) while x do (if (numberp x) (push x stack) (let ((a (pop stack)) (b (pop stack))) (push (funcall x b a) stack))) do (format t "~&~a" car stack) finally (return stack)))) (rpn *standard-input*)