[pro] Defined but no used variable warning during setf expansion
Scott L. Burson
Scott at sympoiesis.com
Mon Jan 23 23:37:03 UTC 2012
On Mon, Jan 23, 2012 at 5:18 AM, Burton Samograd
<burton.samograd at gmail.com> wrote:
> Hello,
>
> I am wondering if anyone can explain the reason for the defined
> but not used variable in setf that this code is experiencing:
I don't know for sure, but there are a couple of things that are odd
about your macro-writing macro. One is that in the `defmacro' and
`defsetf' it generates, the `var' passed in the outer macro call is
reused as a parameter of the generated macro and setf expander. The
other is the two calls to `eval'.
I haven't taken the time to work out why those things are there, but I
would suggest they probably shouldn't be. Try getting rid of them and
see what happens.
-- Scott
> (defmacro defactive (var value &key write-handler read-handler)
> (let ((setf-handler-name (gensym)))
> `(progn
> (defparameter ,var ,value)
> (defmacro ,setf-handler-name (,var)
> (let ((read-handler (gensym)))
> `(let ((,read-handler (get ',',var :read-handler)))
> (if ,read-handler
> (funcall ,read-handler (eval ,',var))
> ,',var))))
> (defsetf ,setf-handler-name (,var) (new-val)
> (let ((write-handler (gensym)))
> `(let ((,write-handler (get ',',var :write-handler)))
> (when ,write-handler
> (funcall ,write-handler (eval ,',var) ,new-val))
> (setf ,',var ,new-val))))
> (setf (get ',var 'setf-handler-name) ',setf-handler-name)
> (setf (get ',var :write-handler) ,write-handler)
> (setf (get ',var :read-handler) ,read-handler)
> ,value)))
More information about the pro
mailing list