Is this a Lucid bug? (Lucid4.0.0 on a Decstation)
When I try to do something like (setf (nthcdr 1 list1) list2),
I'm told that (setf nthcdr) is an undefined function. Lucid does
define a setf method for nthcdr and the error seems to be happening
inside of it. Specificially, it happens inside setf::4.lisp.nthcdr.
Thanks in advance,
Ted Rees
·····@pitt.edu
In article <····@blue.cis.pitt.edu> ····@cs.pitt.edu (Ernest T Rees) writes:
> Is this a Lucid bug? (Lucid4.0.0 on a Decstation)
>
> When I try to do something like (setf (nthcdr 1 list1) list2),
> I'm told that (setf nthcdr) is an undefined function. Lucid does
> define a setf method for nthcdr and the error seems to be happening
> inside of it. Specificially, it happens inside setf::4.lisp.nthcdr.
>
> Thanks in advance,
>
> Ted Rees
> ·····@pitt.edu
Check CLtL2, p. 128.
The form
(setf (foo x) y)
gets macroexpanded into
(funcall #'(setf foo) y x)
when no other option is applicable. This happens whether or not #'foo or
#'(setf foo) is actually defined.
There is no SETF method for NTHCDR. So the default happens. It happens to
be an undefined function.
setf::4.lisp.nthcdr just happens to be the internal name. The bug, if any,
is that we let you've seen the internal name. Any error message should
mention (setf nthcdr).
-- Frank Yellin
··@lucid.com