anchor.diff:             (t (,cmp ls rs)))))
   
   (stdobject "Math"
  +  (mth "toString" () "[object Math]")
  +
     (pr "E" (exp 1))
     (pr "LN2" (log 2))
     (pr "LN10" (log 10))
  
positive.code:             (unless (obj-p res) (return res)))))
        (js-type-error))))
  
  (defun obj-class (obj) (declare (ignore obj)) "Object") ;; TODO
    
  (deftype js-number ()
    (if *float-traps*
        '(or number (member :Inf :-Inf :NaN))
  
negative.code: (stdfunc "eval" (str)
    (compile-eval (translate (parse-js:parse-js-string (to-string str)))))
  
  ;; TODO URI encoding/decoding functions
  
  (defun ensure-proto (spec)
    (cond ((keywordp spec) (find-proto spec))
          ((eq (car spec) :clone)
           (obj-from-props (find-proto (second spec)) (list (pr "constructor" nil))))
          (t (obj-from-props (find-proto :object) (cons (pr "constructor" nil) spec)))))
  
  (defun build-constructor (self proto props constr)
    (obj-from-props (find-proto :function)
  