[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] multiple values module

On Fri, May 20, 2011 at 10:07:04PM +0200, xacc.ide@x wrote:
> If your Scheme accepts (values 1 (values 1 2 3) 3) [1], your Scheme is 
> broken.

Broken by what definition?  The standard is supposed to be a report of
common practice.  As John pointed out, there are more implementations
that accept it than do not, so it makes sense that the report allow this.

Originally, I strongly disagreed with Felix's choice when he modified
MV handling to discard extra values in single-value contexts because
I thought it was weird and unschemely (and maybe "broken").

Today, I even *rely* on this behaviour in some of my code and am very
happy this change was made.  This just shows that there's no one
obviously "right" way to do this, and each approach has its merits.
It's unfair to dismiss a consciously made choice like that as "broken".

This behaviour is quite practical and even enables a new idiom;
procedures can return one "main" value and several additional values
that you might sometimes need.  Then you can just call the procedure
as if it returned one value when you don't need the extra info.  

"The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music."
							-- Donald Knuth

Scheme-reports mailing list