anchor.diff:  ;;; Primitive functions
   ;;;
   
  +(defvar *primitives* (list))
  +
   (defmacro defprimitive (name value)
  -  `(extend *global-env* (clutter-symbol ,name) ,value))
  +  (once-only (name value)
  +   `(progn
  +      (push ,value *primitives*)
  +      (extend *global-env* (clutter-symbol ,name) ,value))))
   
   (defmacro defprimop (name vau-list &body body)
     `(defprimitive ,name
  
positive.code:             (t (if (eq x y) *true* *false*)))
        *false*))
  
  (defprimfun "symbol?" (x)
    (if (clutter-symbol-p x) *true* *false*))
  (defprimfun "keyword?" (x)
  
negative.code:   (if (clutter-function-p x) *true* *false*))
  (defprimfun "vau?" (x)
    (if (clutter-operator-p x) *true* *false*))
  (defprimfun "primitive?" (x)
    (if (find x *primitives*) *true* *false*))
  
  (defprimfun "vau-name" (v)
    (clutter-operator-name v))
  