Macro lamcal::bind [−][src]
macro_rules! bind { ($name:ident => $term:expr) => { ... }; ($name:expr => $term:expr) => { ... }; }
Constructs a Binding
s 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")])) ) ) );