let as transformation
authorDavid Vazquez <davazp@gmail.com>
Sun, 16 Dec 2012 04:07:13 +0000 (04:07 +0000)
committerDavid Vazquez <davazp@gmail.com>
Sun, 16 Dec 2012 04:07:13 +0000 (04:07 +0000)
lispstrack.lisp
test.lisp

index abc1b2b..386caed 100644 (file)
 (define-transformation progn (&rest body)
   `((lambda () ,@body)))
 
+(define-transformation let (bindings &rest body)
+  `((lambda ,(mapcar 'car bindings) ,@body)
+    ,@(mapcar 'cadr bindings)))
+
 ;;; aritmetic primitives
 (define-compilation + (x y)
   (concat "((" (ls-compile x env fenv) ") + (" (ls-compile y env fenv) "))"))
index 0f19c5f..b5f0437 100644 (file)
--- a/test.lisp
+++ b/test.lisp
@@ -57,6 +57,9 @@
 
 (debug (progn 1 2 3 123))
 
+(debug (let ((x 99999))
+         (incf x)))
+
 ;;; &rest lambda-list
 
 (debug (lambda (&rest x) x))