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 and HAP orders reduce expressions to their normal forms
  • The APP order will fail to fully reduce expressions containing functions without a normal form, e.g. the Y 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

Normal - leftmost outermost; the most popular lambda calculus reduction strategy

Call-by-name - leftmost outermost, but no reductions inside abstractions

Head spine - leftmost outermost, but abstractions reduced only in head position

Hybrid normal - a hybrid between HSP (head spine) and NOR (normal) strategies

Applicative - leftmost innermost; the most eager strategy; unfit for recursion combinators

Call-by-value - leftmost innermost, but no reductions inside abstractions

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]

[src]

Formats the value using the given formatter.

impl PartialEq for Order
[src]

[src]

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

1.0.0
[src]

This method tests for !=.

impl Clone for Order
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Copy for Order
[src]

impl Display for Order
[src]

[src]

Formats the value using the given formatter. Read more