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 applyThread Previous | Thread Next