- '(lambda (name args &rest body)
- `(progn
- (eval-when-compile
- (%compile-defmacro ',name
- '(lambda ,(mapcar (lambda (x)
- (if (eq x '&body)
- '&rest
- x))
- args)
- ,@body)))
- ',name))))
-
- (defmacro defvar (name value)
+ '(%lambda (name args &rest body)
+ `(eval-when-compile
+ (%compile-defmacro ',name
+ '(%lambda ,(mapcar (lambda (x)
+ (if (eq x '&body)
+ '&rest
+ x))
+ args)
+ ,@body))))))
+
+ (setq nil 'nil)
+ (setq t 't)
+
+ (defmacro when (condition &body body)
+ `(if ,condition (progn ,@body) nil))
+
+ (defmacro unless (condition &body body)
+ `(if ,condition nil (progn ,@body)))
+
+ (defmacro defvar (name value &optional docstring)
+ `(progn
+ (unless (boundp ',name)
+ (setq ,name ,value))
+ ,@(when (stringp docstring) `((oset ',name "vardoc" ,docstring)))
+ ',name))
+
+ (defmacro defparameter (name value &optional docstring)