perl6-internals
[Top] [All Lists]

Re: [perl #58236] [TODO][PDD19] make decision on open issue on .return d

To: perl6-internals@perl.org
Subject: Re: [perl #58236] [TODO][PDD19] make decision on open issue on .return directive in pdd19
From: Allison Randal <allison@perl.org>
Date: Sat, 30 Aug 2008 11:04:02 +0200
Delivered-to: mailing list perl6-all@perl.org
Delivered-to: perl6-all-poster@perl.org
Delivered-to: mailing list perl6-internals@perl.org
Delivered-to: perl6-internals@perl.org
In-reply-to: <rt-3.6.HEAD-29762-1219400211-1603.58236-72-0@perl.org>
List-help: <mailto:perl6-all-help@perl.org>
List-id: <perl6-all.perl.org>
List-id: <perl6-internals.perl.org>
List-post: <mailto:perl6-all@perl.org>
List-subscribe: <mailto:perl6-all-subscribe@perl.org>
List-unsubscribe: <mailto:perl6-all-unsubscribe@perl.org>
Mailing-list: contact perl6-all-help@perl.org; run by ezmlm
References: <RT-Ticket-58236@perl.org> <7b0e52b40808220315t1d360f05ob14a2c9184907063@mail.gmail.com> <rt-3.6.HEAD-29762-1219400211-1603.58236-72-0@perl.org>
User-agent: Thunderbird 2.0.0.16 (Macintosh/20080707)
Klaas-Jan Stol (via RT) wrote:

The parentheses surrounding the arguments are mandatory. Besides making
sequence break more conspicuous, this is necessary to distinguish this
syntax from other uses of the C<.return> directive that will be probably
deprecated.


The open issue of the 'probably deprecation' should be decided on; what
return directive is meant here that supposedly would be deprecated?
Will it? (any need?)

Yes, it will be deprecated, or at least renamed. The C<.return> directive without parentheses is an old convention for passing a single return result, and must always be sandwiched between C<.begin_return> and C<.end_return>.

And, there's another C<.return> without parentheses that performs a tail-call, invoking a sub or method reusing the same return continuation. This should also be renamed.

The only directive that should be named C<.return> is the one that returns a value or values (i.e. it's syntactic sugar for a whole collection of low-level directives/opcodes).

Allison


<Prev in Thread] Current Thread [Next in Thread>