[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: continue/repeat...until false dichotomy
- From: Roberto Ierusalimschy <roberto@...>
- Date: Wed, 17 Feb 2010 09:56:50 -0200
> 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 :-)
The semantics for repeat-unitl is this: The statement
repeat <body> until <condition>
translates to
while true do
<body>
if <condition> then break end
end
This is formal enough to check program transformations.
-- Roberto