From: Ernest T Rees
Subject: lucid/setf/nthcdr
Date: 
Message-ID: <1992@blue.cis.pitt.edu>
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
From: Frank Yellin
Subject: Re: lucid/setf/nthcdr
Date: 
Message-ID: <FY.93Jan15181302@hardwick.lucid.com>
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