`(eval-when-compile
,@(mapcar (lambda (decl) `(!proclaim ',decl)) decls)))
- (declaim (constant nil t) (special t nil))
- (setq nil 'nil)
+ (defmacro defconstant (name value &optional docstring)
+ `(progn
+ (declaim (special ,name))
+ (declaim (constant ,name))
+ (setq ,name ,value)
+ ,@(when (stringp docstring) `((oset ',name "vardoc" ,docstring)))
+ ',name))
+
+ (defconstant t 't)
+ (defconstant nil 'nil)
(js-vset "nil" nil)
- (setq t 't)
(defmacro lambda (args &body body)
`(function (lambda ,args ,@body)))
(defun eval (x)
(js-eval (ls-compile-toplevel x t)))
- (export '(&rest &key &optional &body * *gensym-counter* *package*
- + - / 1+ 1- < <= = = > >= and append apply aref arrayp
- assoc atom block boundp boundp butlast caar cadddr caddr
- cadr car car case catch cdar cdddr cddr cdr cdr char
- char-code char= code-char cond cons consp constantly
- copy-list decf declaim defparameter defun defmacro defvar
- digit-char digit-char-p disassemble do do* documentation
- dolist dotimes ecase eq eql equal error eval every export
- fdefinition find-package find-symbol first flet fourth
- fset funcall function functionp gensym get-universal-time
- go identity if in-package incf integerp integerp intern
- keywordp labels lambda last length let let*
- list-all-packages list listp make-array make-package
- make-symbol mapcar member minusp mod multiple-value-bind
- multiple-value-call multiple-value-list
- multiple-value-prog1 nil not nth nthcdr null numberp or
- package-name package-use-list packagep parse-integer plusp
- prin1-to-string print proclaim prog1 prog2 progn psetq
- push quote remove remove-if remove-if-not return
- return-from revappend reverse rplaca rplacd second set
- setq some string-upcase string string= stringp subseq
- symbol-function symbol-name symbol-package symbol-plist
- symbol-value symbolp t tagbody third throw truncate unless
- unwind-protect values values-list variable warn when
- write-line write-string zerop))
+ (export '(&rest &key &optional &body * *gensym-counter* *package* +
+ - / 1+ 1- < <= = = > >= and append apply aref arrayp assoc
+ atom block boundp boundp butlast caar cadddr caddr cadr
+ car car case catch cdar cdddr cddr cdr cdr char char-code
+ char= code-char cond cons consp constantly copy-list decf
+ declaim defconstant defparameter defun defmacro defvar
+ digit-char digit-char-p disassemble do do* documentation
+ dolist dotimes ecase eq eql equal error eval every export
+ fdefinition find-package find-symbol first flet fourth
+ fset funcall function functionp gensym get-universal-time
+ go identity if in-package incf integerp integerp intern
+ keywordp labels lambda last length let let*
+ list-all-packages list listp make-array make-package
+ make-symbol mapcar member minusp mod multiple-value-bind
+ multiple-value-call multiple-value-list
+ multiple-value-prog1 nil not nth nthcdr null numberp or
+ package-name package-use-list packagep parse-integer plusp
+ prin1-to-string print proclaim prog1 prog2 progn psetq
+ push quote remove remove-if remove-if-not return
+ return-from revappend reverse rplaca rplacd second set
+ setq some string-upcase string string= stringp subseq
+ symbol-function symbol-name symbol-package symbol-plist
+ symbol-value symbolp t tagbody third throw truncate unless
+ unwind-protect values values-list variable warn when
+ write-line write-string zeropt))
(setq *package* *user-package*)