Hmmm, I notice the ANS says this about the VALUES type specifier: This *type specifier*<http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_t.htm#type_specifier> can be used only as the *value-type* in a *function*<http://www.lispworks.com/documentation/HyperSpec/Body/t_fn.htm#function> *type specifier*<http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_t.htm#type_specifier> or a *the*<http://www.lispworks.com/documentation/HyperSpec/Body/s_the.htm#the> *special form*<http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_s.htm#special_form> . I consider this to be a flaw in the ANS. The CHECK-TYPE macro takes a _place_ as its first subform, and _place_ is defined in the glossary in terms of _generalized reference_ which in 5.1.1 contains text mentioning values plural in a couple places, e.g. the ultimate result of evaluating *setf*<http://www.franz.com/support/documentation/current/ansicl/dictentr/setfpset.htm> is the value or values being stored. I think during the proofreading of the many ANS drafts no one except me ever checked this issue for consistency, and I did it 21 years too late. If god had intended standards to be such precious things, he wouldn't have made so many of them. On Sun, Sep 22, 2013 at 5:45 PM, Steve Haflich <shaflich@gmail.com> wrote:
On Sun, Sep 22, 2013 at 1:18 PM, Scott McKay <swmckay@gmail.com> wrote:
It's sad that this conses...
A challenge exercise for students:
If an implementation can stack-cons a &rest list, no heap consing is necessary.
Hint: multiple-value-call