The D Programming Language
    Herman Rubin 
    cik at l.cc.purdue.edu
       
    Sun Mar  6 21:13:17 AEST 1988
    
    
  
In article <25284 at cca.CCA.COM>, g-rh at cca.CCA.COM (Richard Harter) writes:
			........
>                But how do I get stuff back.  I can pass one thing back
> via the return statement.  To pass more than one thing I have to play
> games.  Things which are returned need a mechanism equivalent to pass
> by address.
No, what is needed is to abandon the mistaken notion that a function
returns a single result.  From day one, lists should have been allowed
to the left of the replacement sign--this is not just for functions,
but even for direct operators.  For example, the infamous frexp function
in C should not have the syntax
	y = frexp(x,&n);
but
	y,n = frexp(x);
This would, for example, allow n to be in a register, which is probably 
where it should be anyhow.
Another example would be to have
	q,r = a///b;
where the quotient and remainder are simultaneously produced.  Possibly
if that were in the language, we would not find the operation disappearing
from hardware.
		......
> 
> The following example is illustrative syntax only:
> 
> [int *,int] foobar();
> ....
> [ptr,flag] = foobar(arg)
>    int arg;
> {
>    int *a, *b;
>    ....
>    return [a,1];
>    ....
>    return [b,0];
> }
I would drop the brackets, but otherwise the notation is reasonable.
Another thing is to allow the return value to be stored _before_ the
return statement.  It may be desirable to do other computations after
computing the value, especially for functions with side effects, such
as random number procedures.
-- 
Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907
Phone: (317)494-6054
hrubin at l.cc.purdue.edu (ARPA or UUCP) or hrubin at purccvm.bitnet
    
    
More information about the Comp.lang.c
mailing list