Enum lambda_calculus::reduction::Order
[−]
[src]
pub enum Order {
Normal,
CallByName,
HeadSpine,
HybridNormal,
Applicative,
CallByValue,
HybridApplicative,
}The evaluation order of
β-reductions. The default is Normal.
They don't always yield the same result:
- The
Normal,HybridNormal,ApplicativeandHybridApplicativeorders reduce expressions to their normal forms - The
Applicativeorder will fail to fully reduce expressions containing functions without a normal form, e.g. theYcombinator (they will expand forever) - The
CallByNameorder reduces to weak head normal form - The
CallByValueorder reduces to weak normal form - The
HeadSpineorder reduces to head normal form
Variants
Normalleftmost outermost
CallByNameleftmost outermost, but not inside abstractions
HeadSpineleftmost outermost, but abstractions reduced only in head position
HybridNormala hybrid between HeadSpine and Normal
Applicativeleftmost innermost
CallByValueleftmost innermost, but not inside abstractions
HybridApplicativea hybrid between CallByValue and Applicative
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 !=.