[10:04:44]  <lizmat>    re the shortcircuiting behaviour of && || and friends, 
and the fact you cannot override them (RT #130540)
[10:05:09]  <lizmat>    I wonder whether we perhaps need a new kind of 
signature that would make this work:
[10:05:20]  <lizmat>    sub a(*@a) { dd @a.shift }; my $a = 0; a $a++,$a++; dd 
$a   # sorta expected to see $a = 1 here
[10:05:27]  <lizmat>    m: sub a(*@a) { dd @a.shift }; my $a = 0; a $a++,$a++; 
dd $a
[10:05:27]  <camelia>   rakudo-moar 8f3476: OUTPUT«0␤Int $a = 2␤»
[10:05:52]  <lizmat>    aka, a lazy slurpy signature
[10:06:41]  <lizmat>    which would allow && || and friends to become full HLL 
citizens, rather then needing to be handled at codegen level and thus make them 
unoverridable

> On 12 Jan 2017, at 06:28, Lloyd Fournier <lloyd.fo...@gmail.com> wrote:
> 
> There is a &infix:<&&> which might be where some confusion comes from. I 
> guess that's there for meta operators. For example:
> multi sub infix:<&&>("foo","bar") { "win" };
> say "foo" && "bar" # bar
> say <foo> Z&& <bar> # win
> 
> so it does kinda work actually just not as you might expect.
> 
> LL
> 
> 
> On Thu, Jan 12, 2017 at 9:21 AM jn...@jnthn.net via RT 
> <perl6-bugs-follo...@perl.org> wrote:
> On Tue, 10 Jan 2017 17:59:05 -0800, c...@zoffix.com wrote:
> > On Tue, 10 Jan 2017 16:23:18 -0800, fernandocor...@gmail.com wrote:
> > > If I write another || operator it will continue to use the original
> > > version.
> > >
> > > https://irclog.perlgeek.de/perl6/2017-01-10#i_13895823
> > > <https://irclog.perlgeek.de/perl6/2017-01-10#i_13895823>
> >
> > To save other readers sifting through the chan log... Even an only sub
> > doesn't take root:
> >
> > <Zoffix> m: sub infix:<||> ($, $) {"hi"}; say 42 || 55
> > <camelia> rakudo-moar 9a11ea: OUTPUT«42␤»
> >
> > This applies to &&, and, or, and I'd guess any shortcurcuiting
> > operator.
> 
> These are special compiler forms that receive special code-gen, due to their 
> shortcircuiting nature, and so do not result in sub calls. Thus there's no 
> sub to override.

Reply via email to