[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«0Int $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.