(defun greater10 (value code) (when (> value 10) (apply (car code) (cdr code)))) (let ((msg "Hello")) (greater10 20 `(format t "~a~%" ,msg)))
If you wanted to carry around your bindings with you and change them through function calls, you'd probably use a special variable.