anchor.diff:    (let ((js-name (intern (concatenate 'string "JS-" (symbol-name name)) #.*package*)))
       `(eval-when (:compile-toplevel :load-toplevel :execute)
         (defun ,js-name ,lambda-list ,@body)
  -      (setf (gethash ',name *js-compiler-macros*) #',js-name))))
  +      (setf (gethash ,(symbol-name name) *js-compiler-macros*) #',js-name))))
   
   (defun js-compiler-macro-form-p (form)
  -  (when (gethash (car form) *js-compiler-macros*)
  +  (when (gethash (symbol-name (car form)) *js-compiler-macros*)
       t))
   
   (defun js-get-compiler-macro (name)
  -  (gethash name *js-compiler-macros*))
  +  (gethash (symbol-name name) *js-compiler-macros*))
   
   ;;; macro expansion
   
   (eval-when (:compile-toplevel :load-toplevel :execute)
  -  (defvar *js-macro-toplevel* (make-hash-table)
  +  (defvar *js-macro-toplevel* (make-hash-table :test 'equal)
       "Toplevel of macro expansion, holds all the toplevel javascript macros.")
     (defvar *js-macro-env* (list *js-macro-toplevel*)
       "Current macro environment."))
  
positive.code:   "Lookup the macro NAME in the current macro expansion
  environment. Returns the macro and the parent macro environment of
  this macro."
    (do ((env *js-macro-env* (cdr env)))
        ((null env) nil)
      (let ((val (gethash name (car env))))
        (when val
  	(return-from lookup-macro
  	  (values val (or (cdr env)
  
negative.code: ;;; macros
  
  (define-js-compiler-macro macrolet (macros &rest body)
    (let* ((macro-env (make-hash-table :test 'equal))
  	 (*js-macro-env* (cons macro-env *js-macro-env*)))
      (dolist (macro macros)
        (destructuring-bind (name arglist &rest body) macro
  	(setf (gethash (symbol-name name) macro-env)
  	      (compile nil `(lambda ,arglist ,@body)))))
      (js-compile `(progn ,@body))))
  
  