Or maybe C<where> is just the way we spell the adverb specifier?
And therefore, in turn, perhaps C<where> is how we set properties on a subroutine call:
foo('bar') where error('fatal');
Then, within the subroutine call, one can access them via C<&_.props>:
sub foo($arg) {
return 1 if $arg eq 'bar'
given &_.props{error} {
when 'fatal' { die "horribly" }
when 'verbose' { warn "direly"; continue; }
default { return 0 }
}
}This would argue that such adverbs ought usually be specified like properties:
return @foo where from(Block);
want Lazy where context(Method);
caller where context({.label eq 'MAINLOOP"});which seems to read better anyway.
Damian
