Function lambda_calculus::list::reverse [] [src]

pub fn reverse() -> Term

Reverses a Church-encoded list.

REVERSE := Y (λgal.NULL l a (g (PAIR (FIRST l) a) (SECOND l))) NIL = Y (λ λ λ NULL 1 2 (3 (PAIR (FIRST 1) 2) (SECOND 1))) NIL

Example

use lambda_calculus::term::Term;
use lambda_calculus::list::reverse;
use lambda_calculus::arithmetic::{zero, one};
use lambda_calculus::reduction::beta_full;

let list = Term::from(vec![one(), one(), zero()]);

assert_eq!(beta_full(reverse().app(list)), Term::from(vec![zero(), one(), one()]));