aboutsummaryrefslogtreecommitdiff
path: root/src/sexp/util.rs
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-14 12:17:41 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-14 12:17:41 +0300
commit0975bff6ddcf48de4072561adea67a5c1cd4456f (patch)
treef77291d0430079d6927bf896c133e97a6e59c684 /src/sexp/util.rs
parent189d06730ae23770fbb970bf37eb0993edb8cd2d (diff)
downloadmyslip-0975bff6ddcf48de4072561adea67a5c1cd4456f.tar.gz
myslip-0975bff6ddcf48de4072561adea67a5c1cd4456f.zip
fix: step scrutinee of case & can instantiate empty vec
Diffstat (limited to 'src/sexp/util.rs')
-rw-r--r--src/sexp/util.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sexp/util.rs b/src/sexp/util.rs
index 3de45d4..aa7ae18 100644
--- a/src/sexp/util.rs
+++ b/src/sexp/util.rs
@@ -94,4 +94,12 @@ impl SExp {
_ => None,
}
}
+
+ pub fn back_to_case(scrutinee: SExp, arms: Vec<SExp>) -> SExp {
+ let mut res = Atom(Nil);
+ for arm in arms.into_iter().rev() {
+ res = scons(arm, res);
+ }
+ scons(Case, scons(scrutinee, res))
+ }
}