Also known as constructs you wish you hadn't discovered.

So, I'm reading through Finkel and I came across the following, which
computes the greatest common divisor of a and b (recast into perl6ish
syntax)

  while {
    when $a < $b { $b -= $a }
    when $b < $a { $a -= $b }
  }

The idea is that the loop keeps on looping until none of the guard
conditions match. This can be redone in 'real' Perl 6 as

  while 1 {
    given 1 {
      when $a < $b { $b -= $a }
      when $b < $a { $a -= $b }
      else { last }
    }
  }

I'm not sure about the 'break'ing behaviour of a C<when> that isn't in
a C<given> block so I've introduced a 'dummy' one here. Maybe Larry
can clarify.

So, do we want this monstrosity? I confess that I did find myself
using something like it occasionally when I was working on the scheme
evaluator, but it looks very weird indeed.



-- 
Piers

   "It is a truth universally acknowledged that a language in
    possession of a rich syntax must be in need of a rewrite."
         -- Jane Austen?

Reply via email to