Re: Rationale for $!

[email protected] (Moritz Lenz) Wed, 27 Jan 2016 16:56:54 +0100
Newsgroups perl.perl6.language
Message-ID <[email protected]>
On 01/27/2016 04:32 PM, Felipe Gasper wrote:
> On 27 Jan 2016 10:15 AM, Moritz Lenz wrote:
>>
>> On 01/27/2016 03:15 PM, Felipe Gasper wrote:
>>> So, what *is* the scoping of $!?
>>
>> Scoped to a routine, iirc (sub, method, regex)
>
> Interesting. JavaScript programmers that I’ve known bemoan that their
> language uses function scoping rather than block scoping.
>
> That also seems incongruent with the built-in block scoping for try/CATCH.
>
> Has Perl 6 embraced function scoping as a major paradigm, then?

I wouldn't say "major paradigma", but it's not the only construct that 
uses routine scoping. return() and fail() come to mind, which are also 
routine-scoped.

> But, what is the point of $! at all?

Convenience. It makes it easy to write commonly-used constructs much faster.

My mostly unscientific approach to gather usage of try vs. CATCH in the 
ecosystem:
moritz@hack:~/p6/perl6-all-modules$ git grep --word CATCH | wc -l 

461
moritz@hack:~/p6/perl6-all-modules$ git grep --word try | wc -l
864

CATCH is also rather clunky by comparison (requires an explicit block, 
whereas 'try' can be used as a statement prefix; requires a "when" or 
"default" blocks).

> $! is also not mentioned here: http://perl6intro.com/#_exception_handling

Feel free to fix that by submitting a pull request :-)

Cheers,
Moritz