anchor.diff:    (concat "var " (translate name) " = " (translate value) ";\n"))
   
   (defmacro setf (name value)
  -  (concat (translate name) " = " (translate value) ";\n"))+  (concat (translate name) " = " (translate value) ";\n"))
  +
  +(defmacro list (&rest args)
  +  (concat "[ " (join ", " (map args translate)) " ]"))
  +
  +(defmacro apply (fn arglist)
  +  (macros.send fn 'apply 'undefined arglist))
  +
  +(defmacro macro-list ()
  +  (concat "["
  +	  (indent (join ",\n"
  +			(map (-object.keys macros)
  +			     macros.quote)))
  +	  "]"))
  +
  +(defmacro macroexpand (name)
  +  (let ((macro (get macros name)))
  +    (if macro (send macro to-string) "undefined")))
  
positive.code:    (indent (translate body))
     "};"))
  
  (defmacro > (lhs rhs)
    (concat "(" (translate lhs) " > " (translate rhs) ")"))
  
  (defmacro < (lhs rhs)
    (concat "(" (translate lhs) " < " (translate rhs) ")"))
  
  (defmacro = (lhs rhs)
    (concat "(" (translate lhs) " === " (translate rhs) ")"))
  
  (defmacro != (lhs rhs)
    (concat "(" (translate lhs) " !== " (translate rhs) ")"))
  
  (defmacro not (exp)
    (concat "(!" (translate exp) ")"))
  
negative.code: (defmacro get (arr i)
    (concat "(" (translate arr) ")[" (translate i) "]"))
  
  (defmacro set (arr i val)
    (concat "(" (translate arr) ")[" (translate i) "] = " (translate val)))
  
  (defmacro if (arg truebody falsebody)
    (concat
     "(function(){"
  