On Sun, 06 Nov 2016 20:25:50 -0800, lloyd.fo...@gmail.com wrote: > 15:18 < llfourn_> m: say (Str andthen .uc orelse "foo") # more golfed > 15:18 <+camelia> rakudo-moar 1c425f: OUTPUT«-> ;; $_ is raw { > #`(Block|81391040) ... }» > 15:23 < llfourn_> m: say (Str andthen .uc orelse "foo")("wee") > 15:23 <+camelia> rakudo-moar 1c425f: OUTPUT«foo» > > unless I totally missed what these are meant to do a Block is not what > should be returned from this expression.
The issue is due to `andthen` (and `notandthen`) actually returning Empty instead of the advertized "first undefined value" and since Empty is a Slip, it causes an issue with `orelse`. While the fix is trivial, it causes fallout with `with` operator and right now we're waiting for TimToady to chime in on how things should be done. IRC conversation: https://irclog.perlgeek.de/perl6-dev/2016-11-09#i_13539174