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
,APP
andHAP
orders reduce expressions to their normal forms - The
APP
order will fail to fully reduce expressions containing functions without a normal form, e.g. theY
combinator (they will expand forever) - The
CBN
order reduces to weak head normal form - The
CBV
order reduces to weak normal form - The
HSP
order reduces to head normal form
Variants
NOR
Normal - leftmost outermost; the most popular lambda calculus reduction strategy
CBN
Call-by-name - leftmost outermost, but no reductions inside abstractions
HSP
Head spine - leftmost outermost, but abstractions reduced only in head position
HNO
Hybrid normal - a hybrid between HSP
(head spine) and NOR
(normal) strategies
APP
Applicative - leftmost innermost; the most eager strategy; unfit for recursion combinators
CBV
Call-by-value - leftmost innermost, but no reductions inside abstractions
HAP
Hybrid 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
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.
impl Clone for Order
[src]
fn clone(&self) -> Order
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more