(defmacro special-if ((quoted-form then else)) `(progn (print ,quoted-form) (if ,quoted-form ,then ,else))) (defun tst1 () (let ((x "abc")) (special-if (x 1 2)))) ;;1 (defun tst2 () (let ((x "abc")) (lambda () (special-if (x 1 2))))) ;;2