See a snippet of code:
(defstruct page address lang public source function)
(defmacro with-apache-address (&whole source
(address &key lang public)
&body body)
(let ((adr (gensym "address")))
`(let ((,adr ,address))
(setf (gethash ,adr *apache-address-table*)
(make-page
:address ,adr
:lang ,lang
:public ,public
:source ',source
:function (lambda (command)
(declare (ignorable command))
,@body)))
;; return address
,adr)))
You can see the source of this below. I used standard double quotes instead of my reader hack to avoid the lisp reader transformation.
(defstruct page address lang public source function)
(defmacro with-apache-address (&whole source
(address &key lang public)
&body body)
(let ((adr (gensym "address")))
`(let ((,adr ,address))
(setf (gethash ,adr *apache-address-table*)
(make-page
:address ,adr
:lang ,lang
:public ,public
:source ',source
:function (lambda (command)
(declare (ignorable command))
,@body)))
;; return address
,adr)))