Function lamcal::inspect::or[][src]

pub fn or<LHS, RHS>(lhs: LHS, rhs: RHS) -> Or<LHS, RHS>

Combines the two given inspections into an Or combinator inspection.

An inspection is any implementation of the Inspect trait.

Examples

use lamcal::inspect::{or, Collect, Limit};
use lamcal::{app, lam, var, Enumerate, NormalOrder};

let mut term = app(
    lam("x", app(lam("y", app(var("x"), var("y"))), var("z"))),
    var("a"),
);

let mut inspection = or(Limit::new(42), Collect::new());

term.reduce_inspected::<NormalOrder<Enumerate>, _>(&mut inspection);

assert_eq!(inspection.left().count(), 2);
assert_eq!(
    inspection.right().terms(),
    &[
        app(
            lam("x", app(lam("y", app(var("x"), var("y"))), var("z"))),
            var("a")
        ),
        app(lam("x", app(var("x"), var("z"))), var("a")),
    ]
);
assert_eq!(term, app(var("a"), var("z")));