[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Why is break not syntactically required to be the last statement in a block (anymore)?
- From: Francisco Olarte <folarte@...>
- Date: Fri, 29 Jul 2022 09:20:16 +0200
Sean:
On Fri, 29 Jul 2022 at 04:10, Sean Conner <sean@conman.org> wrote:
> If I'm doing this, then I would restructure the code to be:
> -- existing code
> local function foo()
> for ...
> for ...
> for ...
> if somecondition then
> return
> end
> end
> end
> end
> end
>
> foo()
That's a nice usage of local functions....
> I would do the same to make up for the lack of continue:
>
> local function foo()
> while somecondition do
> ...
> if somecondition then
> return foo() -- my "continue" is here
> end
> ..
> end
> end
> foo()
... and tail calls ( I use that a lot, but mainly as
structured-uber-gotos, to implement flow-diagram like things ). Color
me impressed, I'm too used to other languages to think of it, but I'm
gonna start calling it "the Connerian transform" and I know a couple
places where it would fit in my code.
> Remember, Lua can have nested functions.
Although I routinely use them, with their upvalue capturing ability,
as callbacks I have never thought of that, local functions can treat
locals as a kind of "globals for this one invocation". I assume it is
because when I do that refactoring in, say, C++, I have to pass in-out
all the local values and normally I only have needs for long
breaks/continues/gotos in functions with tons of state. Last one looks
Lispy.
Francisco Olarte.