pub fn traverse<F>(&self, func: &mut F)
    where
        F: FnMut(&Expr) -> (),
    {
        func(self);
        for c in self.children() {
            c.traverse(func);
        }
    }
Run a closure on this expression and every child, in pre-order.
weld/src/ast/ast.rs