aboutsummaryrefslogtreecommitdiff
path: root/src/sexp/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sexp/mod.rs')
-rw-r--r--src/sexp/mod.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/sexp/mod.rs b/src/sexp/mod.rs
index 4e3c11c..7aa517b 100644
--- a/src/sexp/mod.rs
+++ b/src/sexp/mod.rs
@@ -59,11 +59,19 @@ use SLeaf::*;
impl SExp {
+ /// Quick test that lets are values
+ /// ```rust
+ /// use myslip::sexp::{SExp::*, SLeaf::*, util::*};
+ /// assert!(scons(Let, scons(var("a"), scons(5, Nil))).is_value())
+ /// ```
pub fn is_value(&self) -> bool {
match self {
SCons(a, b) =>
- (**a == Atom(Quote) || **a == Atom(Vector))
- && b.consists_of_values(),
+ SCons(a.clone(), b.clone()).check_let().is_some() ||
+ (
+ (**a == Atom(Quote) || **a == Atom(Vector))
+ && b.consists_of_values()
+ ),
Atom(Var(_)) => false,
Atom(_) => true,
}