From: David Lichteblau
Subject: "and" and multiple values
Date: 
Message-ID: <651rfl$lg9$1@unlisys.unlisys.net>
I just tried to do something similar to

> (and t (values nil 'foo) t)
NIL

I would have expected it to return both nil and foo.
Seemingly the result is correct, as the HyperSpec says:

	As soon as any form evaluates to nil, and returns
	nil without evaluating the remaining forms.

	and passes back multiple values from the last subform
	but not from subforms other than the last.

But what is the reason for this behaviour? If a subform returns
nil, as (values nil 'foo) does, why shouldn't this value be
returned by and?

For or this is understandable, because it also tries the other
possibilities, like in 

> (or nil (values nil 'foo) nil)
NIL

where the last nil finally results in or failing, but and seems
to be a totally different case for me.

Thanks,
David