24 lines
425 B
Rust
24 lines
425 B
Rust
use std::rc::Rc;
|
|
|
|
#[derive(Debug, debug2::Debug, PartialEq)]
|
|
|
|
crate enum Tree {
|
|
Leaf(Literal),
|
|
Define(String, Box<Tree>),
|
|
If(Box<[Tree; 3]>),
|
|
Lambda(Lambda),
|
|
Branch(Vec<Tree>),
|
|
}
|
|
|
|
#[derive(Debug, debug2::Debug, PartialEq, Clone)]
|
|
|
|
crate struct Lambda(crate Rc<[String]>, crate Rc<[Tree]>);
|
|
|
|
#[derive(Debug, debug2::Debug, PartialEq)]
|
|
|
|
crate enum Literal {
|
|
Sym(String),
|
|
Num(f64),
|
|
Bool(bool),
|
|
}
|