aboutsummaryrefslogtreecommitdiff
path: root/src/sexp/step.rs
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-06 14:15:12 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-06 14:15:12 +0300
commit23b2028bdce46d02209fc2df70fc5468a8beffa8 (patch)
tree31e7a6fae6d5d01759a84334555f4cd1fa26a038 /src/sexp/step.rs
parent3d7ebeddc46e89c8e058b3f1805f836339a2f9ae (diff)
downloadmyslip-23b2028bdce46d02209fc2df70fc5468a8beffa8.tar.gz
myslip-23b2028bdce46d02209fc2df70fc5468a8beffa8.zip
Added boilerplate and tests for let-binds
Diffstat (limited to 'src/sexp/step.rs')
-rw-r--r--src/sexp/step.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/sexp/step.rs b/src/sexp/step.rs
index 535b183..e031fca 100644
--- a/src/sexp/step.rs
+++ b/src/sexp/step.rs
@@ -237,6 +237,36 @@ impl SExp {
/// scons(2, Nil))).step(),
/// Ok(scons(Vector, scons(1, scons(2, Nil))))
/// );
+ /// ```
+ ///
+ /// **Let-bindings**
+ /// ```rust
+ /// use myslip::sexp::{SExp::*, SLeaf::*, util::*};
+ ///
+ /// assert_eq!(
+ /// scons(
+ /// scons(Let, scons(var("x"), scons(5, Nil))), scons(
+ /// scons(Add, scons(var("x"), scons(1, Nil))), Nil
+ /// )
+ /// ).step(),
+ /// Ok(scons(Add, scons(5, scons(1, Nil))))
+ /// );
+ /// assert_eq!(
+ /// scons(
+ /// scons(Let, scons(var("y"), scons(4, Nil))),
+ /// scons(
+ /// scons(Let, scons(var("x"), scons(5, Nil))),
+ /// scons(scons(Add, scons(var("x"), scons(var("y"), Nil))), Nil)
+ /// )
+ /// ).step(),
+ /// Ok(scons(
+ /// scons(Let, scons(var("x"), scons(5, Nil))), scons(
+ /// scons(Add, scons(var("x"), scons(1, Nil))), Nil
+ /// )
+ /// ))
+ /// );
+ /// ```
+ ///
pub fn step(self) -> Result<Self, String> {
match self {