Macro lambda_calculus::pi
source · macro_rules! pi { ($i:expr, $n:expr) => { ... }; }
Expand description
A macro for obtaining a projection function (π
) providing the i
-th (one-indexed) element of
a lambda-encoded n
-tuple.
Example
use lambda_calculus::term::*;
use lambda_calculus::*;
let t2 = || tuple!(1.into_church(), 2.into_church());
assert_eq!(beta(app(pi!(1, 2), t2()), NOR, 0), 1.into_church());
assert_eq!(beta(app(pi!(2, 2), t2()), NOR, 0), 2.into_church());
let t3 = || tuple!(1.into_church(), 2.into_church(), 3.into_church());
assert_eq!(beta(app(pi!(1, 3), t3()), NOR, 0), 1.into_church());
assert_eq!(beta(app(pi!(2, 3), t3()), NOR, 0), 2.into_church());
assert_eq!(beta(app(pi!(3, 3), t3()), NOR, 0), 3.into_church());