On Fri, 07 Apr 2017 19:09:55 -0700, lloyd.fo...@gmail.com wrote: > IMO any() junctions should propagate exceptions regardless of whether one of > its other values succeeded
Well, they do. The exception gets thrown. It just aborts all of the results. In a superimposition of multiple universes calculating $foo == 42, a crash in one universe crashes all of them :| Would be interesting to see a Junctioned result in $! though :) > I think it's generally considered a bug anytime ~~ throws an exception > because of invalid LHS Yes. Please report anything that explodes in smartmatch. We recentlish fixed Str ~~ Numeric smartmatch exploding, so actually anyone on latest Rakudo Star would get an explosion in `"foo" ~~ 42` > I guess bare blocks don't autothread because $_ is Mu That's correct. Only subs and methods default to Any. Variables, attributes, and block's params default to Mu type constraint. Asking for a `Mu` is a way to avoid Junctional autothreading in routines. You'll notice a Junction is a Mu, but unlike most Perl 6 classes, is not an Any. > thought ACCEPTS on Code would autothread but it seems it's also Mu (could > we change this?). Changing it breaks 5 stresstests. We also smartmatch in `when` blocks and `where` constraints, so the impact would be far-reaching. Making ACCEPTS not accept a Mu breaks this code for example; it no longer prints the string: $_ = 42|42; when *.so { say "there"}