Diffstat (limited to 'src/parser/types.rs')
-rw-r--r--src/parser/types.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/parser/types.rs b/src/parser/types.rs
index 298b573..2385564 100644
--- a/src/parser/types.rs
+++ b/src/parser/types.rs
@@ -15,6 +15,9 @@ pub enum Ast<'s> {
Module(Vec<Expr<'s>>),
}
+#[derive(Clone, Debug)]
+pub struct Lambda<'s>(pub Vec<Expr<'s>>);
+
#[derive(Clone)]
pub enum Value<'s> {
Float(f64),
@@ -34,11 +37,13 @@ impl std::fmt::Debug for Value<'_> {
}
}
-#[derive(Clone)]
+#[derive(Clone, Debug)]
pub enum Expr<'s> {
NoOp,
+ Function(super::fun::Function<'s>),
Value(Value<'s>),
Ident(&'s str),
+ Lambda(Lambda<'s>),
Let {
name: &'s str,
rhs: Box<Expr<'s>>,