value argument is optional in defvar
authorDavid Vázquez <davazp@gmail.com>
Mon, 6 May 2013 12:23:11 +0000 (13:23 +0100)
committerDavid Vázquez <davazp@gmail.com>
Mon, 6 May 2013 12:23:11 +0000 (13:23 +0100)
src/boot.lisp

index 3ba4fda..ccb6f9b 100644 (file)
 (defmacro unless (condition &body body)
   `(if ,condition nil (progn ,@body)))
 
-(defmacro defvar (name value &optional docstring)
+(defmacro defvar (name &optional (value nil value-p) docstring)
   `(progn
      (declaim (special ,name))
-     (unless (boundp ',name) (setq ,name ,value))
+     ,@(when value-p `((unless (boundp ',name) (setq ,name ,value))))
      ,@(when (stringp docstring) `((oset ',name "vardoc" ,docstring)))
      ',name))