Enum lambda_calculus::reduction::Order
[−]
[src]
pub enum Order {
NOR,
CBN,
HSP,
HNO,
APP,
CBV,
HAP,
}The evaluation order of
β-reductions. The default is NOR (normal order).
They don't always yield the same result:
- The
NOR,HNO,APPandHAPorders reduce expressions to their normal forms - The
APPorder will fail to fully reduce expressions containing functions without a normal form, e.g. theYcombinator (they will expand forever) - The
CBNorder reduces to weak head normal form - The
CBVorder reduces to weak normal form - The
HSPorder reduces to head normal form
Variants
NORNormal - leftmost outermost; the most popular lambda calculus reduction strategy
CBNCall-by-name - leftmost outermost, but no reductions inside abstractions
HSPHead spine - leftmost outermost, but abstractions reduced only in head position
HNOHybrid normal - a hybrid between HSP (head spine) and NOR (normal) strategies
APPApplicative - leftmost innermost; the most eager strategy; unfit for recursion combinators
CBVCall-by-value - leftmost innermost, but no reductions inside abstractions
HAPHybrid applicative - a hybrid between CBV (call-by-value) and APP (applicative)
strategies; usually the fastest-reducing normalizing strategy
Trait Implementations
impl Debug for Order[src]
impl PartialEq for Order[src]
fn eq(&self, __arg_0: &Order) -> bool
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Rhs) -> bool1.0.0
This method tests for !=.