From: Jamie Zawinski
Subject: Re: bashing arguments
Date: 
Message-ID: <22804@pasteur.Berkeley.EDU>
In article <····@osc.COM> ···@osc.COM (Joe Keane) writes:
> Are you allowed to do rplacd on an argument list from &args or &rest?

Yes.  It was illegal on Symbolics and Explorer lisp machines for some time,
but that was a bug and they fixed it.

Another tricky issue is returning rest-lists.  It's possible for rest-lists 
to reside on the stack, so they are automatically freed when the frame exits -
but then, if they are stored into a higher context, they must be copied first.

If you do something like

	(defun foo ()
	  (apply 'bar '(a b c)))

	(defun bar (&rest x)
	  (setf (cdr x) nil))

I'm not sure if it's legal or not - the list '(a b c) might be put in constant
space by the compiler.  For most cases, it seems wrong that BAR should have to
worry about this sort of thing, and the arglist should be copied (with the copy
perhaps living on the stack).  But there might be cases where preserving EQity
was important...

		-- Jamie