lambda_calculus 1.3.0

A simple implementation of the untyped lambda calculus
Documentation
#![cfg(not(feature = "no_church"))]

extern crate lambda_calculus as lambda;

use lambda::*;
use lambda::church::lists::*;

#[test]
fn test_last() {
    let list1 = || { Term::from(vec![1.into()]) };
    let list2 = || { Term::from(vec![0.into(), 1.into(), 2.into(), 3.into(), 4.into()]) };

    assert_eq!(beta(app(last(), nil()), NOR, 0, false), nil());
    assert_eq!(beta(app(last(), list1()), NOR, 0, false), 1.into());
    assert_eq!(beta(app(last(), list2()), NOR, 0, false), 4.into());

    assert_eq!(beta(app(last(), nil()), HNO, 0, false), nil());
    assert_eq!(beta(app(last(), list1()), HNO, 0, false), 1.into());
    assert_eq!(beta(app(last(), list2()), HNO, 0, false), 4.into());

    assert_eq!(beta(app(last(), nil()), HAP, 0, false), nil());
    assert_eq!(beta(app(last(), list1()), HAP, 0, false), 1.into());
    assert_eq!(beta(app(last(), list2()), HAP, 0, false), 4.into());
}