develooper Front page | perl.perl6.language | Postings from January 2009

Re: returning one or several values from a routine

Thread Previous | Thread Next
From:
Dave Whipp
Date:
January 6, 2009 18:02
Subject:
Re: returning one or several values from a routine
Message ID:
20090106213552.2975.qmail@lists.develooper.com
Daniel Ruoso wrote:

> Hmm... I think that takes the discussion to another level, and the
> question is:
> 
>  "what does a capture returns when coerced to a context it doesn't
> provide a value for?"

I'd like to take one step further, and ask what it is that introduced 
capture semantics in the first place. And I suggest that the answer 
should be "the use of a signature"

I'd also suggest that we get rid of the use of backslash as a 
capture-creation operator (the signature of Capture::new can do that) 
and instead re-task it as a "signature" creation operator.

If we do that, then I think we can reduce the discussion of the 
semantics of multi-returns to the semantics of assignments:

If the sub/method defines a return-signature then that is used (with 
standard binding semantics), otherwise the result is semantically a flat 
list.

If the LHS is an assignment is a signature, then the rhs is matched to it:

my  (@a, %b) = 1,2,3, b => 4; ## everything in @a; %b empty
my \(@a, %b) = 1,2,3, b => 4; ## @a = 1,2,3; %b = (b=>4)

If the rhs is the result of a return from a function that has no 
return-signature, then the same semantics would apply

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About