Package visitors
Visitors for performing operations on Terms
- class lambda_calculus.visitors.Visitor[source]
-
ABC for Visitors visiting Terms.
The visitor is responsible for visiting child terms.
Type Variables:
T: represents the type of the result produced by visiting terms V: represents the type of variables used in terms
- final visit(term: Term[V]) T [source]
Visit a term
- Parameters
term – term to visit
- Returns
Result of calling
terms.Term.accept()
with self as argument
- abstract visit_variable(variable: Variable[V]) T [source]
Visit a Variable term.
- Parameters
variable – variable term to visit
- Returns
value as required by its type variable
- abstract visit_abstraction(abstraction: Abstraction[V]) T [source]
Visit an Abstraction term
The body is not automatically visited.
- Parameters
abstraction – abstraction term to visit
- Returns
value as required by its type variable
- abstract visit_application(application: Application[V]) T [source]
Visit an Application term
The abstraction and argument are not automatically visited.
- Parameters
appliation – application term to visit
- Returns
value as required by its type variable
- class lambda_calculus.visitors.BottomUpVisitor[source]
Bases:
Visitor
[T
,V
]ABC for visitors which visit child terms first
Child terms are automatically visited.
- final visit_abstraction(abstraction: Abstraction[V]) T [source]
Visit an Abstraction term
The body is visited before calling
ascend_abstraction()
.- Parameters
abstraction – abstraction term to visit
- Returns
value returned by
ascend_abstraction()
- final visit_application(application: Application[V]) T [source]
Visit an Application term
The abstraction and argument are visited before calling
ascend_application()
.- Parameters
application – application term to visit
- Returns
value returned by
ascend_application()
- abstract ascend_abstraction(abstraction: Abstraction[V], body: T) T [source]
Visit an Abstraction term after visiting its body.
- Parameters
abstraction – abstraction term to visit
body – value produced by visiting its body
- Returns
value as required by its type variable
- abstract ascend_application(application: Application[V], abstraction: T, argument: T) T [source]
Visit an Application term after visiting its abstraction and argument.
- Parameters
application – application term to visit
abstraction – value produced by visiting its abstraction
argument – value produced by visiting its argument
- Returns
value as required by its type variable
- class lambda_calculus.visitors.DeferrableVisitor[source]
Bases:
Visitor
[T
,V
]ABC for visitors which can visit terms top down lazyly.
- abstract defer_abstraction(abstraction: Abstraction[V]) tuple[T, Optional[lambda_calculus.visitors.DeferrableVisitor[T, V]]] [source]
Visit an Abstraction term.
- Parameters
abstraction – abstraction term to visit
- Returns
tuple containing a value as required by its type variable and a visitor to be used for visiting its body
- abstract defer_application(application: Application[V]) tuple[T, Optional[lambda_calculus.visitors.DeferrableVisitor[T, V]], Optional[lambda_calculus.visitors.DeferrableVisitor[T, V]]] [source]
Visit an Application term.
- Parameters
application – application term to visit
- Returns
tuple containing a value as required by its type variable and visitors to be used for visiting its abstraction and argument