diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-14 12:17:41 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-14 12:17:41 +0300 |
commit | 0975bff6ddcf48de4072561adea67a5c1cd4456f (patch) | |
tree | f77291d0430079d6927bf896c133e97a6e59c684 /src/sexp/util.rs | |
parent | 189d06730ae23770fbb970bf37eb0993edb8cd2d (diff) | |
download | myslip-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.rs | 8 |
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)) + } } |