From 00cf7eb0a1316ce0e330ed9a1e218fc60ae0b8cd Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Sun, 3 Aug 2025 13:07:36 +0300 Subject: Implemented type_check, added method parts for SExp 'parts' is different from 'into_vec', because it doesn't require flat structure and always succeeds --- src/sexp/util.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/sexp') diff --git a/src/sexp/util.rs b/src/sexp/util.rs index 70ac152..0818e6b 100644 --- a/src/sexp/util.rs +++ b/src/sexp/util.rs @@ -58,4 +58,16 @@ impl SExp { _ => Err("expected list, found atom".to_string()), } } + + pub fn parts(self) -> Vec { + match self { + Atom(x) => vec![Atom(x)], + SCons(a, b) if *b == Atom(Nil) => vec![*a], + SCons(a, b) => { + let mut res = vec![*a]; + res.extend_from_slice(&(*b).parts()); + res + }, + } + } } -- cgit v1.2.3