Re: Open Source
- Posted by Matt Lewis <matthewwalkerlewis at gma?l.co?> Oct 19, 2007
- 667 views
Juergen Luethje wrote: > > I do not make it a religion. Please do not put words into my mouth. > I just say that it's obsolete in high-level languages. This is of > course only true if a language provides sufficient other possibilities. > For instance in Euphoria, it would be useful not only to have an 'exit' > statement, but also the possibility to write something like > > exit <number of levels> I've often thought this, too, although that construct worries me. What happens if the levels change? Even if they don't change, it's not trivial to figure out the target of that exit. A label-based exit, OTOH, can be very useful, and explicit. For example, perl allows you to name a block (which could be a while/for/etc) and to use the next/last operators along with the block name: http://en.wikipedia.org/wiki/Perl_control_structures A euphorian implementation might look like:
:mainloop for i = 1 to n do ... :jloop for j = 1 to m do .... if foo then exit :mainloop end if while foo > 5 do ... if bar then exit :jloop end if ... end for end for
That keeps the labels firmly associated with their proper loops. It makes the goal very clear, although at the expense of clarity of where you're going:
for i = 1 to n do ... for j = 1 to m do .... if foo then goto :mainloop end if while foo > 5 do ... if bar then goto :jloop end if ... end for :jloop end for :mainloop
I can see benefits to both ways, though I think I would prefer keeping them associated with the loop. It's also how exits work right now. Matt