[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The values returned by SETF
- To: "David A. Moon" <Moon@SCRC-STONY-BROOK.ARPA>
- Subject: The values returned by SETF
- From: Ram@C.CS.CMU.EDU
- Date: Tue, 25 Aug 1987 14:12:00 -0000
- Cc: common-lisp@SAIL.STANFORD.EDU, "D. Loewenstern" <dml@NADC.ARPA>
- In-reply-to: Msg of 24 Aug 1987 14:47-EDT from David A. Moon <Moon at STONY-BROOK.SCRC.Symbolics.COM>
- Sender: RAM@
Date: Monday, 24 August 1987 14:47-EDT
From: David A. Moon <Moon at STONY-BROOK.SCRC.Symbolics.COM>
To: D. Loewenstern <dml at NADC.ARPA>
Re: The values returned by SETF
Date: Mon, 24 Aug 87 14:25:04 EDT
From: email@example.com (D. Loewenstern)
Is the value returned by SETF defined in general, for all
standard get/put functions?
Specifically, what is returned by (SETF (VALUES IGNORE X)
(VALUES 1 2))?
SETF returns the values of its last subform (CLtL p.97).
Actually, it says "the ultimate result of evaluating the setf form is
the value of newvalue." I would interpret your restatement to mean
that it has to return all the values of the newvalue form. I can't
see how you can do this in a Common Lisp macro without using
Multiple-Value-List. At least in our implementation:
(setf foo (values 1 2 3)) => 1
I would guess that the actual rule is that setf returns the number of
values that the setf method was expecting (supposing that the setf
method writer bothers to return the right value(s)).