Related articles |
---|
Multiple return values Arthur.Chance@Smallworld.co.uk (1997-04-16) |
Re: Multiple return values WStreett@shell.monmouth.com.spamguard (1997-04-18) |
Re: Multiple return values smryan@mail.com (1997-04-18) |
Re: Multiple return values icedancer@ibm.net (1997-04-18) |
Re: Multiple return values hbaker@netcom.com (1997-04-18) |
Re: Multiple return values fjh@mundook.cs.mu.OZ.AU (1997-04-18) |
Re: Multiple return values (Mars Saxman) marssaxman%sprynet.com.antispam@nac (marssaxman) (1997-04-18) |
Re: Multiple return values preston@tera.com (1997-04-18) |
Re: Multiple return values jbuck@Synopsys.COM (1997-04-18) |
Re: Multiple return values smryan@mail.com (1997-04-20) |
Re: Multiple return values danwang@dynamic.CS.Princeton.EDU (1997-04-20) |
Re: Multiple return values smcadams@sprynet.com (steve mcadams) (1997-04-20) |
[24 later articles] |
From: | fjh@mundook.cs.mu.OZ.AU (Fergus Henderson) |
Newsgroups: | comp.compilers,comp.lang.misc |
Date: | 18 Apr 1997 01:04:45 -0400 |
Organization: | Comp Sci, University of Melbourne |
References: | 97-04-091 |
Keywords: | design |
Arthur.Chance@Smallworld.co.uk (Arthur Chance) writes:
>Most programming languages allow procedures with multiple arguments
>(in some cases allowing them to be used in curried form as well), but
>very few languages allow multiple return values, in spite of the fact
>that multiple results *are* multiple arguments when you're wearing
>CPS-tinted glasses. Why is this?
Many if not most programming languages allow procedures with
multiple output arguments. For example, instead of
(x, y) = foo(a, b);
in C you can write
foo(a, b, &x, &y);
and in C++ or Ada you can write
foo(a, b, x, y);
and (at least to a first approximation) this is no less convenient.
Return values only provide syntactic convenience over and above
output arguments in the single return value case, when you can
avoid naming the result. For example,
bar(baz(a));
is more convenient than
int tmp;
baz(a, &tmp);
bar(tmp);
But in the multiple return value case, you're going to have to name
the argument values anyway. Thus allowing multiple return values
doesn't seem to buy you much over allowing output arguments.
(Note that I'm not saying that allowing multiple return values is
necessarily a bad idea, I'm just giving my guess as to the reasons
for the historical data you observed.)
--
Fergus Henderson <fjh@cs.mu.oz.au>
WWW: <http://www.cs.mu.oz.au/~fjh>
PGP: finger fjh@128.250.37.3
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.