[plt-scheme] Multiple values
I don't think the rationale for multiple value returns has anything to
do with performance. Wouldn't it be odd for the language standard
that specifies generic arithmetic (which has major performance
implications) to introduce something as odd as multiple value return
just to enable a performance tweak? (And not a big one, as far as I
can tell.)
The rationale I have heard is that multiple value returns restore the
symmetry between calling functions (where you can pass multiple
values) and returning from functions (where you normally pass only
one). The Scheme authors have always been especially fond of the
insight that returns are really a specialized kind of call. I think
it bothered them that those calls were restricted to take only a
single value. So they removed the restriction.
But in this case, utility and happiness did not bloom magically into
existence through the removal of restrictions, as the Scheme mythology
requires. It doesn't seem that people generally find multiple value
returns very useful. Is that because they're too accustomed to other
languages, or is it because it just doesn't matter much, and treating
everything as tuples the way ML does just works better? I dunno.