(defconstant t 't)
(defconstant nil 'nil)
(%js-vset "nil" nil)
+(%js-vset "t" t)
(defmacro lambda (args &body body)
`(function (lambda ,args ,@body)))
(defun not (x) (if x nil t))
+(defun funcall (function &rest args)
+ (apply function args))
+
+(defun apply (function arg &rest args)
+ (apply function (apply #'list* arg args)))
+
;; Basic macros
(defmacro dolist ((var list &optional result) &body body)
(value (second pairs)))
(multiple-value-bind (vars vals store-vars writer-form reader-form)
(!get-setf-expansion place)
+ (declare (ignorable reader-form))
;; TODO: Optimize the expansion a little bit to avoid let*
;; or multiple-value-bind when unnecesary.
`(let* ,(mapcar #'list vars vals)
(multiple-value-bind ,store-vars
,value
- ,writer-form
- ,reader-form)))))
+ ,writer-form)))))
(t
`(progn
,@(do ((pairs pairs (cddr pairs))