[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: continue continued, with break N
- From: Axel Kittenberger <axkibe@...>
- Date: Fri, 19 Nov 2010 08:20:17 +0100
wait, +0 is something different than -0? No please not.
BTW: with a continue and multilevel break, i consider "redo" not a an
essential feature of same importance, since with these 2 constructs,
redo can really be emulated very simply.
for i=1,10 do repeat
if a(i) then
break -- next i / continue
end
if b(i) then
break 2 -- break for loop
end
if c(i) then
continue -- redo with same i
end
untilt true end
On Fri, Nov 19, 2010 at 5:25 AM, David Manura <dm.lua@math2.org> wrote:
> On Wed, 27 Feb 2008 11:32:27 -0300, Roberto Ierusalimschy wrote:
>> Continue, on the other hand, is a real feature. (It even changes the
>> syntax and the lexical.) Our main concern with "continue" is that there
>> are several other control structures that (in our view) are more or
>> less as important as "continue" and may even replace it. (E.g., break
>> with labels [as in Java] or even a more generic goto.) "continue" does
>> not seem more special than other control-structure mechanisms, except
>> that it is present in more languages. (Perl actually has two "continue"
>> statements, "next" and "redo". Both are useful.)
> [1]
>
> We may think of break, continue, redo, and break with labels all as a
> generalization of "break N", slightly generalizing PHP's and
> especially Idle's "break N" [2,3]:
>
> -- begin scope 3
> for x=1,10 do
> -- begin scope 2
> m()
> -- begin scope 1
> for y=1,10 do
> -- begin scope 0
> if a() then break -3 end -- same as goto "begin scope 3" (redo outer loop)
> if b() then break -2 end -- same as goto "begin scope 2" (redo
> outer loop iteration)
> if c() then break -1 end -- same as goto "begin scope 1" (redo loop)
> if d() then break -0 end -- same as goto "begin scope 0" (redo
> loop iteration)
> if e() then break 0 end -- same as goto "end scope 0" (break
> loop iteration -- i.e. continue)
> if f() then break 1 end -- same as goto "end scope 1 (break loop
> -- i.e. "break")
> if g() then break 2 end -- same as goto "end scope 2" (break
> outer loop iteration -- i.e. continue outer)
> if h() then break 3 end -- same as goto "end scope 3" (break
> outer loop -- i.e. break outer)
> -- end scope 0
> end
> -- end scope 1
> n()
> -- end scope 2
> end
> -- end scope 3
>
> Note: This also shares some resemblance to `level` in `error(message, level)`.
>
> [1] http://lua-users.org/lists/lua-l/2008-02/msg01183.html
> [2] http://idle.thomaslauer.com/IdleFAQ.html
> [3] http://www.python.org/dev/peps/pep-3136/
> [4] http://lua-users.org/wiki/ContinueProposal
>
>