[Openmcl-devel] SETQ

Tobias C. Rittweiler tcr at freebits.de
Wed Dec 17 01:23:43 PST 2008

Robert Boyer <boyer at cs.utexas.edu> writes:

> > SETQ is a special form. It cannot be written by a
> > simple macro.
> I get dumber every day, but I increasingly enjoy it
> every time that someone shows me how wrong I am.
> What's so bad about:
>   (defmacro new-setq (x y) `(set ',x ,y))

SET does not work on lexical variables.

    CL-USER> (boundp 'foo)

    CL-USER> (let ((foo :lexical))
               (values foo
                       (set 'foo :value)

    CL-USER> (values (boundp 'foo) foo)

> In my remarks, I was thinking rhetorically and
> historically about Lisp way back at its creation in the
> 50s, way before the terms 'special form' and 'special
> operator' and 'special' were coined.  No doubt you are
> right, though, in a fine sense.

Historically you're right, of course. That is before the introduction of
lexical variables. I wouldn't be surprised if the MacLisp compiler and
interpreter dealt with SETQ differently! :-)


More information about the Openmcl-devel mailing list