[][src]Macro lalrpop_lambda::γ

macro_rules! γ {
    ($func:ident, $arg:ident) => { ... };
    ($func:ident, $arg:expr) => { ... };
    ($func:expr, $arg:ident) => { ... };
    ($func:expr, $arg:expr) => { ... };
}

Theory is nothing without application

This is a more terse form of app!. The main difference between these macros is that this macro wraps it's parts in var! expressions as needed. Whereas with app! we can use the Rust bindings to compose a new expression. Together they allow us to write:

let one = λ!{f.λ!{x.γ!(f, x)}};
let succ = λ!{n.λ!{f.λ!{x.γ!(f, γ!(n, γ!(f, x)))}}};
app!(succ, one);