[Python-ideas] Retrying EAFP without DRY

Nick Coghlan ncoghlan at gmail.com
Tue Jan 24 04:56:38 CET 2012


On Tue, Jan 24, 2012 at 1:18 PM, Stephen J. Turnbull <stephen at xemacs.org> wrote:
> I don't think syntax can express that cleanly, but I can't help
> thinking it's of good thing if somebody like Mike tries to find a way.
> He might succeed!

Special casing "looping with at most two iterations" and "looping
where the body is a single try statement" both seem like very poor
ideas.

OK, so some people apparently take issue with having to map "retry" to
"loop", but how does that even come close to justifying making
*everyone* learn a third looping construct?

We can't even get consensus that PEP 315's generalised while loops
(which allow you to write loop-and-a-half constructs without using
break) would be a net win for the language over the existing idiom.

I'll note that under PEP 315, the problem discussed in this thread
could be handled as:

    do ... while retry:  # '...' stands in for the suite below
        retry = False
        try:
            # attempt consistent operation
        except ExpectedException:
            # set up for next attempt based on result of current attempt
            # even the list of expected exceptions can be made dynamic!
            retry = True

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia



More information about the Python-ideas mailing list