aboutsummaryrefslogtreecommitdiff
path: root/src/sexp/mod.rs
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-21 12:35:37 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-21 12:35:37 +0300
commitd1c97e405230b6616ef834cf38be351e566a228e (patch)
tree7c75d9353b0b3cc9f08400c5d09e0b7552afc9c8 /src/sexp/mod.rs
parenta70dcaa949f41c585f9aea5e79f2550053d8e857 (diff)
downloadmyslip-d1c97e405230b6616ef834cf38be351e566a228e.tar.gz
myslip-d1c97e405230b6616ef834cf38be351e566a228e.zip
feat: implemented coproducts according to tests
Diffstat (limited to 'src/sexp/mod.rs')
-rw-r--r--src/sexp/mod.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/sexp/mod.rs b/src/sexp/mod.rs
index 14731dd..c1a5a8e 100644
--- a/src/sexp/mod.rs
+++ b/src/sexp/mod.rs
@@ -89,7 +89,10 @@ impl SExp {
scons(a.clone(), b.clone()).is_fun() ||
SCons(a.clone(), b.clone()).check_let().is_some() ||
(
- (**a == Atom(Quote) || **a == Atom(Vector) || (**a).is_type_lit())
+ (**a == Atom(Quote)
+ || **a == Atom(Vector)
+ || (**a).is_type_lit()
+ || **a == Atom(Coprod))
&& b.consists_of_values()
),
Atom(Var(_)) => false,
@@ -122,4 +125,11 @@ impl SExp {
_ => false
}
}
+
+ pub fn is_type_atom(&self) -> bool {
+ match self {
+ Atom(Ty(_)) => true,
+ _ => false,
+ }
+ }
}