Grokbase
x

Re: Should (undef ~~ 0) be true? (was Re: pjf: dual life modules)

View PostFlat  Thread  Threaded | < Prev - Next >
Rafael Garcia-Suarez Re: Should (undef ~~ 0) be true? (was Re: pjf: dual life modules)
| +1 vote
[ Profile | Reply to group ] [ Flat  Thread  Threaded ]
2009/7/1 Paul Fenwick <pjf@perltraining.com.au>:
> So, to help fix that, I've written (as I think I promised to long ago), a
> test case to find any surprises. =A0It's based upon the smart-match Perl =
tip
> at http://perltraining.com.au/tips/2008-04-18.html . =A0I'll send it as a
> patch in a separate e-mail. =A0Currently, it gives me two surprises:
>
> =A0 =A0 =A0 =A0my @foo =3D qw(x y z xyzzy ninja);
> =A0 =A0 =A0 =A0ok( @foo ~~ 'ninja' ); =A0 =A0 =A0 =A0 =A0# Fails
>
> =A0 =A0 =A0 =A0my $array_ref =3D [5, 10, 15];
> =A0 =A0 =A0 =A0ok ( $array_ref ~~ 10 ); =A0 =A0 =A0 =A0# Fails
>
> Looking down the table in blead/perlsyn.pod, I see the first one has a
> string on the RHS, and the RHS determines what we do. =A0It looks like th=
at
> falls through to the very last rule (Any/Any), which means we're doing
> string equality. =A0That doesn't seem very useful; because unless we've
> specially crafted our string, it's never going to be true.
>
> The same seems to apply for the second one. =A0I assume we're triggering
> Any/Num, which is doing a straight numerical equality. =A0Again, that doe=
sn't
> seem very useful.
>
> If that's what really what these are triggering, then can I respectfully
> suggest they're changed to search the list instead (as they would do if t=
hey
> were reversed)?

No, because if we have
    given ($foo) { when (undef) {...} }
we sort of expect the code in the when clause to be executed when $foo
is not defined.
That's precisely the same reason why in Perl 6 ~~ isn't commutative any
more either.

Thread : Re: pjf: dual life modules (autodie)
1)
Paul Fenwick G'day Dave, There's autodie 1.999_01 on the CPAN. It supports the hinting interface, has tests, and...
2)
Paul Fenwick G'day Dave, Autodie 2.00 has finally been released, and is making its way through the CPAN. It has...
3)
Tux Thanks, patch successfully applied as 9b657a623c3928518095c706c37ba6315469a48e
4)
Rafael Garcia-Suarez 2009/6/29 H.Merijn Brand <h.m.brand@xs4all.nl>: I have two failures in bleadperl:...
5)
Paul Fenwick I can also reproduce these under cygwin/blead. That'll teach me to post patches before I've...
6)
Paul Fenwick G'day Rafael / p5p, For autodie, hints.t is fixed in my git repository. Those tests were failing...
7)
Abigail I think no matter what choice will be made (undef is separate from 0/""; undef is coerced to 0;...
8)
Rafael Garcia-Suarez 2009/6/29 Paul Fenwick <pjf@perltraining.com.au>: That's an inconsistency, and therefore a bug. I...
9)
Rafael Garcia-Suarez 2009/7/1 I: commit fb51372e8e462d7f3320e8a1b91a913f976aae12 Author: Rafael Garcia-Suarez...
10)
Ricardo SIGNES Waaaaah? I am so confused. This is more special casing. $x~~$str means $x eq $str. undef eq ''. I...
11)
David E. Wheeler I was wondering the same thing. The previous behavior made sense to me because it was consistent...
12)
Paul Fenwick G'day Rafael, Oh good. Thank-you very much! I've just rebuild blead, and it looks like now I don't...
13)
Rafael Garcia-Suarez 2009/7/1 Paul Fenwick <pjf@perltraining.com.au>: tip at sn't hey No, because if we have given...
14)
Paul Fenwick G'day Rafael / p5p, I *think* I get it... If `$array_ref ~~ 10` is allowed to search @$array_ref...
15)
Ricardo SIGNES That footnote appears to have been lost during transmission. What do you suggest is in $x? A simple...
16)
Paul Fenwick It was going to be something about specially formatted strings/numbers that matched stringified...
17)
Paul Fenwick A whole lot of stuff with his vocab hashing to the wrong entries. Please consider:...
18)
Ricardo SIGNES It's funny, because I find the new behavior *much* more straightforward and easy to explain than...
19)
Paul Fenwick Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit G'day Rafael / p5p, As...
spacer
View PostFlat  Thread  Threaded | < Prev - Next >