An Anaphoric Macro is a macro that introduces a variable (often
IT) that captures the result of a user-supplied form. A common example is the Anaphoric If, which is like a regular
IF, but also defines the variable
IT to refer to the result of the test-form.
(defmacro aif (test-form then-form &optional else-form) `(let ((it ,test-form)) (if it ,then-form ,else-form))) (defun test (property plist) (aif (getf plist property) (format t "The value of ~s is ~a.~%" property it) (format t "~s wasn't in ~s!~%" property plist))) (test :a '(:a 10 :b 20 :c 30)) ; The value of :A is 10. (test :d '(:a 10 :b 20 :c 30)) ; :D wasn't in (:A 10 :B 20 :C 30)!