diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-07-30 17:48:11 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-07-30 17:48:11 +0300 |
commit | a4b09d523e0b500de29c08b32abc13af8e509299 (patch) | |
tree | 77e0bdfa5b39c0789e829e698846fb06becbf7e1 /src/sexp/mod.rs | |
parent | d2d4d5cffdce0ce28e59732f56a771f8fc3431de (diff) | |
parent | cd68a2880db1400ae09ce0df64994b2bae33a3c1 (diff) | |
download | myslip-a4b09d523e0b500de29c08b32abc13af8e509299.tar.gz myslip-a4b09d523e0b500de29c08b32abc13af8e509299.zip |
Merge work done on laptop to desktop computer
Merge branch 'devel' of ssh://cron4.fi/~/melisp into devel
Diffstat (limited to 'src/sexp/mod.rs')
-rw-r--r-- | src/sexp/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/sexp/mod.rs b/src/sexp/mod.rs index 020ba63..f6c50d7 100644 --- a/src/sexp/mod.rs +++ b/src/sexp/mod.rs @@ -32,3 +32,23 @@ pub enum SExp { SCons(Box<SExp>, Box<SExp>), Atom(SLeaf), } + +use SExp::*; +use SLeaf::*; + +impl SExp { + pub fn is_value(&self) -> bool { + match self { + SCons(a, _) => **a == Atom(Quote), + Atom(Var(_)) => false, + Atom(_) => true, + } + } + + pub fn consists_of_values(&self) -> bool { + self.is_value() || match self { + SCons(a, b) if (*a).is_value() => b.consists_of_values(), + _ => false + } + } +} |