r10072: new macros
[kmrcl.git] / macros.lisp
index c83b3b64a19f9f9be26f9dd96daa9ed9213f6f6d..d0ba63c629d8e698cc011c6072ce82c20e7d604d 100644 (file)
      (format t "~%~%")
      (values)))
 
-(defmacro defconst (symbol value &optional doc)
-   `(defconstant ,symbol (if (boundp ',symbol)
-                             (symbol-value ',symbol)
-                             ,value)
+(defmacro defconstant* (sym value &optional doc)
+  "Ensure VALUE is evaluated only once."
+   `(defconstant ,sym (if (boundp ',sym)
+                         (symbol-value ',sym)
+                         ,value)
      ,@(when doc (list doc))))
+
+(defmacro defvar-unbound (sym &optional (doc ""))
+    "defvar with a documentation string."
+    `(progn
+      (defvar ,sym)
+      (setf (documentation ',sym 'variable) ,doc)))
+