1use lamcalc::{parser, Error, lambda};
2
3fn main() -> Result<(), Error> {
4 let (tt, _) = parser::parse_exp(r"\x. \y. x")?;
6
7 let (ident, ff, _) = parser::parse_def(r"ff = \x. \y. y")?;
9 assert_eq!(ident, "ff");
10
11 println!("ff = {}", ff);
12
13 let (map, _) = parser::parse_file(r##"
15 // and
16 and = \x. \y. x y x
17
18 // or
19 or = \x. \y. x x y
20 "##)?;
21
22 let and_t_f = lambda!({map["and"]} {tt} {ff}).simplify()?.to_owned();
23 assert_eq!(and_t_f, ff);
24
25 let or_t_f = lambda!({map["or"]} {tt} {ff}).simplify()?.to_owned();
26 assert_eq!(or_t_f, tt);
27
28 Ok(())
29}