anchor.diff:  
   (defun compile-expression (exp type-env def)
     (cond
  -    ((defined-macro-p exp def) (compile-macro exp type-env def))
  +    ((macro-form-p exp def) (compile-macro exp type-env def))
       ((literal-p exp) (compile-literal exp))
       ((cuda-dimension-p exp) (compile-cuda-dimension exp))
       ((variable-reference-p exp)
  
positive.code: 
  ;;; compile macro
  
  (defun macro-p (form)
    (function-p form))
  
  (defun defined-macro-p (form def)
    (or (built-in-macro-p form)
        (user-macro-p form def)))
  
  
negative.code: 
  (defun %expand-macro (form def)
    (cond
      ((macro-form-p form def) (%expand-macro (%expand-macro-1 form def) def))
      ((not (atom form)) (let ((op   (car form))
                               (rest (cdr form)))
                           `(,op ,@(mapcar (lambda (x)
  