Function lambda_calculus::booleans::xor
[−]
[src]
pub fn xor() -> Term
Applied to a Church-encoded boolean it returns its Church-encoded exclusive disjunction.
XOR := λab.a (NOT b) b = λ λ 2 (NOT 1) 1
Examples
use lambda_calculus::booleans::{xor, tru, fls}; use lambda_calculus::reduction::beta; use lambda_calculus::reduction::Order::*; assert_eq!(beta(app!(xor(), tru(), tru()), &Normal, 0), fls()); assert_eq!(beta(app!(xor(), tru(), fls()), &Normal, 0), tru()); assert_eq!(beta(app!(xor(), fls(), tru()), &Normal, 0), tru()); assert_eq!(beta(app!(xor(), fls(), fls()), &Normal, 0), fls());