diff options
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)) + } } |