Macro lamcal::bind[][src]

macro_rules! bind {
    ($name:ident => $term:expr) => { ... };
    ($name:expr => $term:expr) => { ... };
}

Constructs a Bindings from an identifier to a Term.

The bind! macro can be used to conveniently construct a Binding either from an identifier and a Term or a String and a Term.

Examples

This example binds the identifier of an combinator function to its term.

#[macro_use]
extern crate lamcal;
use lamcal::combinator::I;
use lamcal::environment::bind;
use lamcal::{lam, var};

let binding = bind!(I => I());

assert_eq!(binding, bind("I", lam("a", var("a"))));

This example binds a name to an arbitrary term.

#[macro_use]
extern crate lamcal;
use lamcal::combinator::I;
use lamcal::environment::bind;
use lamcal::{lam, var};

let binding = bind! {
    "Hummingbird" => lam("a", lam("b", lam("c", app![var("a"), var("b"), var("c"), var("b")])))
};

assert_eq!(
    binding,
    bind(
        "Hummingbird",
        lam(
            "a",
            lam("b", lam("c", app![var("a"), var("b"), var("c"), var("b")]))
        )
    )
);