forEachWhere p f e is similar to forEach f e, but only applies f to subterms that satisfy the
(pure) predicate p.
It also uses the caching trick used at FindExpr and ReplaceExpr. This can be very effective
if the number of subterms satisfying p is a small subset of the set of subterms.
If p holds for most subterms, then it is more efficient to use forEach f e.
Implements caching trick similar to the one used at
FindExprandReplaceExpr.- checked : Std.HashSet Expr
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
Equations
Instances For
unsafe def
Lean.ForEachExprWhere.visit
{ω : Type}
{m : Type → Type}
[STWorld ω m]
[MonadLiftT (ST ω) m]
[Monad m]
(p : Expr → Bool)
(f : Expr → m Unit)
(e : Expr)
(stopWhenVisited : Bool := false)
:
m Unit
Expr.forEachWhere (unsafe) implementation
Equations
- Lean.ForEachExprWhere.visit p f e stopWhenVisited = (Lean.ForEachExprWhere.visit.go✝ p f stopWhenVisited e).run' Lean.ForEachExprWhere.initCache
Instances For
@[implemented_by Lean.ForEachExprWhere.visit]
opaque
Lean.Expr.forEachWhere
{ω : Type}
{m : Type → Type}
[STWorld ω m]
[MonadLiftT (ST ω) m]
[Monad m]
(p : Expr → Bool)
(f : Expr → m Unit)
(e : Expr)
(stopWhenVisited : Bool := false)
:
m Unit
e.forEachWhere p f applies f to each subterm that satisfies p.
If stopWhenVisited is true, the function doesn't visit subterms of terms
which satisfy p.