diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-21 12:35:37 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-21 12:35:37 +0300 |
commit | d1c97e405230b6616ef834cf38be351e566a228e (patch) | |
tree | 7c75d9353b0b3cc9f08400c5d09e0b7552afc9c8 /src/sexp/mod.rs | |
parent | a70dcaa949f41c585f9aea5e79f2550053d8e857 (diff) | |
download | myslip-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.rs | 12 |
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, + } + } } |