Re: S04 default { } bug?
On Mon, Oct 24, 2005 at 07:39:23AM +0300, Ilmari Vacklin wrote: : Hi, : : S04 says thus: : : The default case: : : default {...} : : is exactly equivalent to : : when true {...} : : However, that parses to: : : if $_ ~~ bool::true { ...; leave } : : Which is not executed if $_ is false, unless ~~ bool::true does : something special. It did do something special at the time the Apocalypse was written, but it was probably a bad idea. Smart match was going to recognize obviously boolean expressions and just ignore the other argument. The problem is that it's not always obvious what's obvious. Larry
Re: S04 default { } bug?
On 10/23/05, Ilmari Vacklin <[EMAIL PROTECTED]> wrote: > Hi, > > S04 says thus: > > The default case: > > default {...} > > is exactly equivalent to > > when true {...} > > However, that parses to: > > if $_ ~~ bool::true { ...; leave } > > Which is not executed if $_ is false, unless ~~ bool::true does > something special. Good catch. Given the discussions about given arglist pattern matching, we may be able to make it: when :(_) {...} Or: when -> _ {...} And if not that, then this ought to work: when ({ 1 }) {...} (A nullary codeblock that is evaluated for truth). Luke