;; Graham's alambda
(defmacro alambda (parms &body body)
`(labels ((self ,parms ,@body))
#'self))
;; Graham's aif
(defmacro aif (test then &optional else)
`(let ((it ,test))
(if it ,then ,else)))
http://stackoverflow.com/questions/23167464/scheme-self-reference-lambda-macro
http://stackoverflow.com/questions/7936024/anonymous-lambdas-directly-referring-to-themselves