anchor.diff:  	     (coerce (nreverse res) 'string)))
   	  (t (string-join (mapcar #'symbol-to-js symbols) "")))))
   
  -(defun compose (&rest fns)
  -  "(funcall (compose #'x #'y #'z) 'foo) is (x (y (z 'foo)))"
  -  (if fns
  -      (let ((fn1 (car (last fns)))
  -	    (fns (butlast fns)))
  -	#'(lambda (&rest args)
  -	    (reduce #'funcall fns 
  -		    :from-end t
  -		    :initial-value (apply fn1 args))))
  -      #'identity))
  -
  -(defun ordered-set-difference (list1 list2 &key (test #'eql))
  +(defun ordered-set-difference (list1 list2 &key (test #'eql)) ;; because the CL set-difference may not preserve order
     (reduce (lambda (list el) (remove el list :test test))
             (cons list1 list2)))
positive.code:     (#\* . "Star")
      (#\/ . "Slash")))
  
  
  ;;; Parenscript-style symbol -> Javascript-style symbol
  
  (defun string-chars (string)
    (coerce string 'list))
  
  (defun constant-string-p (string)
    (let ((len (length string))
  
negative.code:        (char= #\: (char string 0))))
  
  (defun symbol-to-js (symbol)
    "Given a Lisp symbol or string, produces to a valid JavaScript
  identifier by following transformation heuristics case conversion. For
  example, paren-script becomes parenScript, *some-global* becomes
  SOMEGLOBAL."
    (when (symbolp symbol)
      (setf symbol (symbol-name symbol)))
    (let ((symbols (string-split symbol '(#\. #\[ #\]) :keep-separators t :remove-empty-subseqs t)))
  