When you have a state machine (or an actor) and you’re threading its state in a named ‘let’ with many variables, writing those recursive calls can quickly become tedious.
I came up with a pretty nice macro to help with that:
https://git.savannah.gnu.org/cgit/shepherd.git/commit/?id=01db6552f9f70c4a5fff32831c04d75313fb57a4
It can be thought of as a named ‘let’ with named arguments.