[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: continue/repeat...until false dichotomy
- From: Norman Ramsey <nr@...>
- Date: Tue, 16 Feb 2010 17:33:56 -0500
> repeat
> local t = 0
> if cond then continue end
> local t = 1
> ...
> until t == 0
>
> Then the two t are actually different variables (in the current
> implementation), and it's not clear to which incarnation the
> comparison refers.
I'm quite alarmed by this problem.
I was shocked to discover that
local t = 1
repeat
local t = t + 1
print(t)
-- the scope of the inner 't' should end here, but it doesn't
until t == 1
loops forever printing 2.
I would have expected that the condition in the 'until' is outside the
scope of the loop body, just like the condition in a 'while'.
In my mind, this is just a mistake in the language design.
Questions like this are why every few years I ask Roberto when we are
going to get a formal semantics for Lua :-)
Norman Ramsey