Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re(3): do/redo or for(;;): what's Kosher?

by dmmiller2k (Chaplain)
on Jan 04, 2002 at 21:27 UTC ( #136314=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: do/redo or for(;;): what's Kosher?
in thread do/redo or for(;;): what's Kosher?

Just curious. Why would you prefer this:

{ # do stuff last if BREAK-CONDITION; redo; }

to this:

{ # do stuff redo if !BREAK-CONDITION; }

or even (just to be pedantic),

{ # do stuff redo unless BREAK-CONDITION; }

dmm


Comment on Re(3): do/redo or for(;;): what's Kosher?
Select or Download Code
Replies are listed 'Best First'.
(tye)Re3: do/redo or for(;;): what's Kosher?
by tye (Cardinal) on Jan 05, 2002 at 05:38 UTC

    I'm pretty sure that the reason is:

    { # do loop stuff to be done at least once last if BREAK-CONDITION; # do middle loop stuff <<< This part was left out redo; }
    which I'd still use while(1) for. Plus it allows you to do:
    { # read next line last if NoMoreLines # extract item from line redo if NoItemInLine last if EndOfItemListFound # categorize item redo if WrongItemCategory # check for updates redo if NoUpdatesThisCategory; # check permissions last if NoUpdatesAllowed; redo if ThisUpdateNotAllowed; # do update redo if NotFatal; # handle fatal error # (note, no "redo" here so this part isn't really # part of the "loop", just stuff to do once unless # "last" gets triggered above.) } # done with items
    where it is very easy to throw in a new check or new code in. But, as I said elsewhere, I find that power to be too easy to abuse. YMMV.

            - tye (but my friends call me "Tye")

      Ah, in that context, I see where this approach could be useful.

      I think I agree with you, though, that the while (1) (with scattered nexts in place of redos) accomplishes the same thing in a more self-explanatory way.

      dmm

      You can give a man a fish and feed him for a day ...
      Or, you can
      teach him to fish and feed him for a lifetime

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://136314]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (11)
As of 2015-07-29 08:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (261 votes), past polls