Function lambda_calculus::reduction::beta [] [src]

pub fn beta(term: Term, order: Order, limit: usize, verbose: bool) -> Term

Performs β-reduction on a Term with the specified evaluation Order, an optional limit on number of reductions (0 means no limit) and optional display of reduction steps; it returns the Term after reductions.

Example

use lambda_calculus::*;

let expression = parse(&"(λa.λb.λc.a (λd.λe.e (d b)) (λd.c) (λd.d)) (λa.λb.a b)", Classic);
let reduced    = parse(&"λa.λb.b", Classic);

assert!(expression.is_ok());
assert!(reduced.is_ok());
assert_eq!(beta(expression.unwrap(), NOR, 0, false), reduced.unwrap());