oops make that last if !someCondition();
-- Mark Biggar [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] -------------- Original message ---------------------- From: [EMAIL PROTECTED] > loop { > doSomething(); > next if someCondition(); > doSomethingElse(); > } > > -- > Mark Biggar > [EMAIL PROTECTED] > [EMAIL PROTECTED] > [EMAIL PROTECTED] > > -------------- Original message ---------------------- > From: "Mark J. Reed" <[EMAIL PROTECTED]> > > OK, so let's look at the general problem. The structure is this: > > > > doSomething(); > > while (someCondition()) > > { > > doSomethingElse(); > > doSomething(); > > } > > > > ...and you want to factor out the doSomething() call so that it only > > has to be specified once. > > > > Is that correct, Aristotle? > > > > The "gotcha" is that the first doSomething() is unconditional, while > > the first doSomethingElse() should only happen if the loop condition > > is met (which means just moving the test to the end of the block > > doesn't solve the problem). > > > > IFF the doSomething() can be reasonably combined with the conditional > > test, then Bruce's solution works, but that won't necessarily be the > > case in general. Overall, the goal is to ensure that by the end of > > the loop the program is in the state of having just called > > doSomething(), whether the loop runs or not - while also ensuring that > > the program is in that state at the top of each loop iteration. > > > > It does seem like a closure trait sort of thing, but I don't think > > it's currently provided by the p6 spec. >