Struct lamcal::CallByName[][src]

pub struct CallByName<A> { /* fields omitted */ }

Call-By-Name β-reduction to weak head normal form.

  • Reduces the leftmost outermost redex not inside a lambda abstraction first.
  • It treats free variables as non-strict data constructors.
  • Only leftmost redexes are contracted.
  • No reduction is performed under abstractions.

This strategy is uniform as its definition involves no other reduction strategy.

Trait Implementations

impl<A: Default> Default for CallByName<A>
[src]

Returns the "default value" for a type. Read more

impl<A: Debug> Debug for CallByName<A>
[src]

Formats the value using the given formatter. Read more

impl<A: Clone> Clone for CallByName<A>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<A: Copy> Copy for CallByName<A>
[src]

impl<A: PartialEq> PartialEq for CallByName<A>
[src]

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

This method tests for !=.

impl<A> BetaReduce for CallByName<A> where
    A: AlphaRename
[src]

Performs β-reduction allowing to inspect the current term before each contraction. Read more

Performs β-reduction on the given Term and returns the result. Read more

Performs one step of β-reduction on the given Term and returns the result. Read more

Auto Trait Implementations

impl<A> Send for CallByName<A> where
    A: Send

impl<A> Sync for CallByName<A> where
    A: Sync