defvar accepts optional value (it was required)
authorDavid Vazquez <davazp@gmail.com>
Wed, 26 Dec 2012 17:31:35 +0000 (17:31 +0000)
committerDavid Vazquez <davazp@gmail.com>
Wed, 26 Dec 2012 17:31:35 +0000 (17:31 +0000)
lispstrack.lisp

index 79b9b6b..7a771a6 100644 (file)
@@ -35,7 +35,7 @@
         (%compile-defvar ',name))
       (setq ,name ,value)))
 
-  (defmacro defvar (name value)
+  (defmacro defvar (name &optional value)
     `(%defvar ,name ,value))
 
  (defmacro %defun (name args &rest body)
        (%defun ,name ,args ,@body)
        ',name))
 
-  (defmacro defvar (name value)
+  (defmacro defvar (name &optional value)
     `(progn
        (%defvar ,name ,value)
        ',name))
   (defun reverse (list)
     (reverse-aux list '()))
 
-  (defmacro incf (x)
-    `(setq ,x (1+ ,x)))
+  (defmacro incf (x &optional (delta 1))
+    `(setq ,x (+ ,x ,delta)))
 
-  (defmacro decf (x)
-    `(setq ,x (1- ,x)))
+  (defmacro decf (x &optional (delta 1))
+    `(setq ,x (- ,x ,delta)))
 
   (defun list-length (list)
     (let ((l 0))