Similar to traverseLambda but with an additional pos argument to track position.
Equations
- Lean.Meta.traverseLambdaWithPos f p e = Lean.Meta.traverseLambdaWithPos.visit f #[] p e
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Lean.Meta.traverseLambdaWithPos.visit f fvars p x = do let body ← f p (x.instantiateRev fvars) liftM (Lean.Meta.mkLambdaFVars fvars body false true)
Instances For
Similar to traverseForall but with an additional pos argument to track position.
Equations
- Lean.Meta.traverseForallWithPos f p e = Lean.Meta.traverseForallWithPos.visit f #[] p e
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Lean.Meta.traverseForallWithPos.visit f fvars p x = do let body ← f p (x.instantiateRev fvars) liftM (Lean.Meta.mkForallFVars fvars body false true)
Instances For
Similar to traverseLet but with an additional pos argument to track position.
Equations
- Lean.Meta.traverseLetWithPos f p e = Lean.Meta.traverseLetWithPos.visit f #[] p e
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Lean.Meta.traverseLetWithPos.visit f fvars p x = do let body ← f p (x.instantiateRev fvars) liftM (Lean.Meta.mkLetFVars fvars body false)
Instances For
Similar to Lean.Meta.traverseChildren except that visit also includes a Pos argument so you can
track the subexpression position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an expression fun (x₁ : α₁) ... (xₙ : αₙ) => b, will run
f on each of the variable types αᵢ and b with the correct MetaM context,
replacing each expression with the output of f and creating a new lambda.
(that is, correctly instantiating bound variables and repackaging them after)
Equations
- Lean.Meta.traverseLambda visit = Lean.Meta.forgetPos Lean.Meta.traverseLambdaWithPos visit
Instances For
Given an expression (x₁ : α₁) → ... → (xₙ : αₙ) → b, will run
f on each of the variable types αᵢ and b with the correct MetaM context,
replacing the expression with the output of f and creating a new forall expression.
(that is, correctly instantiating bound variables and repackaging them after)
Equations
- Lean.Meta.traverseForall visit = Lean.Meta.forgetPos Lean.Meta.traverseForallWithPos visit
Instances For
Similar to traverseLambda and traverseForall but with let binders.
Equations
- Lean.Meta.traverseLet visit = Lean.Meta.forgetPos Lean.Meta.traverseLetWithPos visit
Instances For
Maps visit on each child of the given expression.
Applications, foralls, lambdas and let binders are bundled (as they are bundled in Expr.traverseApp, traverseForall, ...).
So traverseChildren f e where e = `(fn a₁ ... aₙ) will return
(← f `(fn)) (← f `(a₁)) ... (← f `(aₙ)) rather than (← f `(fn a₁ ... aₙ₋₁)) (← f `(aₙ))
See also Lean.Core.traverseChildren.
Equations
- Lean.Meta.traverseChildren visit = Lean.Meta.forgetPos Lean.Meta.traverseChildrenWithPos visit