fn block(&mut self, children: Vec<Spanned<SST>>) -> Result<(), Syntax> {
        if children.is_empty() {
            self.lit(Lit::Unit);
            return Ok(());
        }

        for child in children {
            self.walk(&child)?;
            self.lambda.emit(Opcode::Del);
        }

        // remove the last delete instruction
        self.lambda.demit();
        Ok(())
    }
A block is a series of expressions where the last is returned.
Each sup-expression is walked, the last value is left on the stack.
passerine/src/compiler/compile.rs