Note the hoops we have to go through to embed a statement in an
_expression_!
That's occasionally irritating when writing regular code, but it's often really problematic for metaprogramming. There's an added AST node `Stat{ block, expr } in metalua to work around this: it's accepted where an _expression_ is expected, the statements block is evaluated, then the _expression_ (in the block's scope), and the result of that _expression_ is the value of the whole `Stat{ } node.
There's no official syntax for it, because I'm not convinced it's worth it, but it's trivial to add one, e.g.:
-{ mlp.expr:add{
'do', mlp.block, 'then', mlp.expr, builder = 'Stat' } }