while
authorRaimon Grau <raimonster@gmail.com>
Fri, 14 Dec 2012 22:48:09 +0000 (23:48 +0100)
committerRaimon Grau <raimonster@gmail.com>
Fri, 14 Dec 2012 23:37:29 +0000 (00:37 +0100)
lispstrack.lisp

index 0057c2e..d7e41a1 100644 (file)
 
 (defvar *compilations* nil)
 
+(defun ls-compile-sexps (sexps env)
+  (concat (join (mapcar (lambda (x)
+                          (ls-compile x env))
+                        sexps)
+                ";
+")))
+
+(defun ls-compile-block (sexps env)
+  (concat (ls-compile-sexps (butlast sexps env) env)
+          ";
+return " (ls-compile (car (last sexps)) env) ";"))
+
+
 (defun extend-env (args env)
   (append (mapcar #'make-binding args) env))
 
@@ -78,9 +91,9 @@ body can access to the local environment through the variable env"
   (lisp->js sexp))
 
 (define-compilation while (pred &rest body)
-  (format nil "(function(){while(~a){~{~a~}}})()"
+  (format nil "(function(){while(~a){~a}})() "
          (ls-compile pred env)
-         (mapcar (lambda (x) (ls-compile x env)) body)))
+         (ls-compile-sexps body env)))
 
 (defparameter *env* '())
 (defparameter *env-fun* '())
@@ -97,15 +110,3 @@ body can access to the local environment through the variable env"
            (apply compiler-func env (cdr sexp))
            ;; funcall
            )))))
-
-(defun ls-compile-sexps (sexps env)
-  (concat (join (mapcar (lambda (x)
-                          (ls-compile x env))
-                        sexps)
-                ";
-")))
-
-(defun ls-compile-block (sexps env)
-  (concat (ls-compile-sexps (butlast sexps env) env)
-          ";
-return " (ls-compile (car (last sexps)) env) ";"))