macro_rules! bind {
($name:ident => $term:expr) => { ... };
($name:expr => $term:expr) => { ... };
}Expand description
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")]))
)
)
);