[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: How to branch both ways?
- From: nobody <nobody+lua-list@...>
- Date: Sun, 21 Apr 2019 23:21:24 +0200
Hey all,
I'm currently doing stuff that involves a mixture of random sampling and
enumeration. I'm passing around a bunch of states that get modified,
and sometimes that requires choices of which path(s) to take.
The best thing I could come up with so far is to basically write in
continuation passing style, i.e.
function foo( state )
-- ...unconditional stuff...
return choice { doThis, doThat, doSomethingElse } ( state )
end
which allows `choice` to either select a branch at random or run all of
the branches (with copies of the state). (This "branch both ways"
wouldn't be possible with normal if/then/else or even coroutines –
there's no way to return to the previous point of execution.)
(I guess I'll also be experimenting with goto and "phase tags", if I
manage to make the choices stackless that might just be good enough…)
Has anyone else done something similar and/or knows a better / more
convenient / interesting / … alternative way to get multi-branching?
-- nobody