MOD, FLOOR
[jscl.git] / lispstrack.lisp
index 3b80936..7bb6945 100644 (file)
          ((not ,condition))
        ,@body))
 
-  #+common-lisp
   (defun concat-two (s1 s2)
     (concatenate 'string s1 s2)))
 
-(defvar *newline* "
-")
+(defvar *newline* (string (code-char 10)))
 
 (defun concat (&rest strs)
   (!reduce (lambda (s1 s2) (concat-two s1 s2))
 (define-compilation = (x y)
   (concat "((" (ls-compile x env fenv) ") == (" (ls-compile y env fenv) "))"))
 
+(define-compilation mod (x y)
+  (concat "((" (ls-compile x env fenv) ") % (" (ls-compile y env fenv) "))"))
+
+(define-compilation floor (x)
+  (concat "(Math.floor(" (ls-compile x env fenv) "))"))
+
 (define-compilation null (x)
   (concat "(" (ls-compile x env fenv) "== undefined)"))
 
 (define-compilation eq (x y)
   (concat "(" (ls-compile x env fenv) " === " (ls-compile y env fenv) ")"))
 
-(define-compilation code-char (x)
+(define-compilation string (x)
   (concat "String.fromCharCode( " (ls-compile x env fenv) ")"))
 
 (define-compilation char (string index)
   (concat "(" (ls-compile object env fenv) ")[" (ls-compile key env fenv) "]"))
 
 (define-compilation set (object key value)
-  (concat "(" (ls-compile object env fenv) ")[" (ls-compile key env fenv) "]")
-  " = " (ls-compile value env fenv))
-
+  (concat "(("
+          (ls-compile object env fenv)
+          ")["
+          (ls-compile key env fenv) "]"
+          " = " (ls-compile value env fenv) ")"))
 
 
 (defun %compile-defvar (name)