develooper Front page | perl.perl5.porters | Postings from October 2015

Re: YA smartmatch proposal [ was: Re: smartmatch needs your eyes]

Thread Previous | Thread Next
From:
Dave Mitchell
Date:
October 12, 2015 10:22
Subject:
Re: YA smartmatch proposal [ was: Re: smartmatch needs your eyes]
Message ID:
20151012102203.GM16789@iabyn.com
On Wed, Oct 07, 2015 at 03:57:26PM -0400, Eric Brine wrote:
> On Wed, Oct 7, 2015 at 4:24 AM, Dave Mitchell <davem@iabyn.com> wrote:
> 
> > 2. Make when's behaviour entirely dependent on the *compile-time* class
> > of of its arg. In particular, make 'when (FOO)' have exactly the following
> > behaviours:
> >
> >     FOO             condition evaluates to
> >     --------------  ----------------------
> >     literal undef             !defined($_)
> >     numeric const                $_ == FOO
> >     literal pattern              $_ ~= FOO
> >     all else                     $_ eq FOO
> >
> > 3. when { FOO } has condition FOO.
> >
> > For example:
> >
> >     use constant ME  => "davem";
> >     when (ANS)     # equivalent to when { $_ == 42 }
> >
> 
> According to your table, shouldn't that be "when { $_ eq ANS }"? ANS could
> have any value, so when (ANS)" is no different than "when ($x)". There's no
> "compile-time class" available to study.

No, its specifically if FOO is a compile-time constant. At compile time
there is no difference between

    when(42)

and

    use constant FOO;
    when(FOO);

They have both been compiled to a single OP_CONST with a constant SV
attached that can be examined at compile-time for numness.  Of course,

    sub FOO {}
    when (FOO)

would be treated as ($_ eq FOO) still.

-- 
"Strange women lying in ponds distributing swords is no basis for a system
of government. Supreme executive power derives from a mandate from the
masses, not from some farcical aquatic ceremony."
    -- Dennis, "Monty Python and the Holy Grail"

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