Remark: we cannot use the caching trick used at FindExpr and ReplaceExpr because they
may visit the same expression multiple times if they are stored in different memory
addresses. Note that the following code is parametric in a monad m.
@[inline]
def
Lean.Expr.forEach'
{ω : Type}
{m : Type → Type}
[STWorld ω m]
[MonadLiftT (ST ω) m]
[Monad m]
(e : Lean.Expr)
(f : Lean.Expr → m Bool)
:
m Unit
Apply f to each sub-expression of e. If f t returns false, then t's children are not visited.
Equations
- e.forEach' f = (Lean.ForEachExpr.visit f e).run