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, Applicative and HybridApplicative orders reduce expressions to their normal forms
  • The Applicative order will fail to fully reduce expressions containing functions without a normal form, e.g. the Y combinator (they will expand forever)
  • The CallByName order reduces to weak head normal form
  • The CallByValue order reduces to weak normal form
  • The HeadSpine order reduces to head normal form

Variants

leftmost outermost

leftmost outermost, but not inside abstractions

leftmost outermost, but abstractions reduced only in head position

a hybrid between HeadSpine and Normal

leftmost innermost

leftmost innermost, but not inside abstractions

a hybrid between CallByValue and Applicative

Trait Implementations

impl Debug for Order
[src]

Formats the value using the given formatter.

impl PartialEq for Order
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Display for Order
[src]

Formats the value using the given formatter. Read more