HaloO,

On Saturday, 31. July 2010 18:56:47 David Green wrote:
> On 2010-07-31, at 1:33 am, Moritz Lenz wrote:
> > sub test() { True };
> > given 0 { when test() { say "OH NOEZ" } }
> > I don't think it's unreasonable to expect the output to be "OH NOEZ".

How does this relate the given to the when? If I get you right the
given is completely ignored and the truth of test() gives "OH NOEZ".
I think the given must determine the result.

> It's not unreasonable, especially if that's what you expect.  But it's even
> more reasonable to expect this to work: given $something {
>               when True { say "That's the truth!" }
>               when 42 { say "Good answer!" }
>               when "viaduct" { say "You guessed the secret word!" }
>       }

Here I expect the $something to *select* one of the alternatives.
It can't be that a literal True ignores the given and just executes
the block.


> In both these examples, the intent is fairly clear from the context.  It's
> easier to forget that Bools behave differently from other types when you
> only have some variable that could be any type: if $guess ~~ $answer { say
> "Correct!" }  # hope your question wasn't T/F!
>
> Maybe we can't please everyone, but we can at least try not to displease
> anyone.  Perl is awfully clever at keeping your eaten ponies, and there is
> a way we can have both the "helpful" syntax and the "consistent" one:
>
>       given $who-knows-what {
>               when True { say "It's a true thing!" }
>               when 42 { say "It's numbery!" }
>               whenever timeout() { say "Who cares what you say, time's up!" }
>               whenever $override { say "Whatever, switching to automatic 
> override" }
>       }

Am I getting your intention to be that when honors the given and whenever just
checks truth? Couldn't we use if for this? That would avoid the new keyword.

Regards, TSa.
-- 
"The unavoidable price of reliability is simplicity" -- C.A.R. Hoare
"Simplicity does not precede complexity, but follows it." -- A.J. Perlis
1 + 2 + 3 + 4 + ... = -1/12  -- Srinivasa Ramanujan

Reply via email to