> > Yeah, every once in a while, I've wanted the second layer, but I'm > > willing to rewrite the statement as a true normal if/while instead of a > > backwards if/while, and it *does* help the overall readability. > > I'd concede that the actual useful uses are rare enough to not warrant > giving a feature that could turn hopelessly ugly quickly - even if the > current generation of tools make it easy to add the feature.
Sorry to respond to my own post. As soon as I sent the reply I still felt an itch for a second level. I agree that such a thing could be abused as Randal mentioned. But how many things are there in Perl 5 and Perl 6 that can't be abused (sorry - that is a sort of subjective thing to ask so I am putting it out hypothetically)? It still seems odd to take some things out of the language but leave others in (ok - most things that have been left out have made perfect sense). I'm much more a fan of the leaving in if the thing being left in doesn't have an exponential cost and if there isn't a good reason to exclude it. We still have goto statements. We have map and grep that now go forwards - but can still go backwards. Taking it out doesn't necessarily prevent abuses since we now have repeat. repeat { repeat { say "Oh no. Not again"; } while $x++ < 10; } while $y++ < 2; As opposed to say "Yes. Yes again" while $x++ < 10 while $y++ < 2; Additionally reading the documentation about repeat it seems that the following should already be allowed since the conditional statement on a repeat is not optional and if it doesn't come first then it MUST come later and if it MUST come later then it isn't a modifier. my $x = 1; repeat { say "hello"; $x = 0 } while $x if $x; Though I would expect the following to break because it wouldn't know to parse for the modifier after the closing brace: my $x = 1; repeat while $x { say "hello"; $x = 0 } if $x; This is what pugs does - though I'm not sure what it means. pugs> my $x = 1; repeat { say "hello"; $x = 0 } while $x; hello 0 pugs> my $x = 1; repeat { say "hello"; $x = 0 } while $x if $x; ....> I think it means that I will probably need to have the correct behavior be clarified to me, obtain a commit bit and add a test to pugs. Anyway. Once again if the alleged crime or the predicted crime is too great then I concede. I can see that it could be abused by some. But that doesn't mean I will abuse it. Paul PS. And not that it matters, but TT3 is planned to support nested statement modifiers and my engine which does much of TT3 already supports them - and I do use them on occasion - but that's a different mailing list.