anchor.diff:  `undefiner'. If it isn't, the results are undefined. `Syntax' is
   the Lisp syntax object that has `definition-form'."))
   
  +(defvar *undefiners* (make-hash-table)
  +  "A hash table mapping operators to undefiners. The undefiners
  +are instances of `undefiner'.")
  +
  +(defun get-undefiner (definition-type)
  +  "Return the undefiner for `definition-type', which must be a
  +symbol. Returns NIL if there is no undefiner of the given type."
  +  (values (gethash definition-type *undefiners*)))
  +
  +(defun invalid-form-for-type (syntax form type-name)
  +  "Signal a `form-conversion-error' describing the fact that
  +`form' cannot define a `type-name'."
  +  (form-conversion-error syntax form "Form cannot define a ~A." type-name))
  +
  +(defun invalid-form (undefiner syntax form)
  +  "Signal a `form-conversion-error' describing the fact that
  +`form' cannot define whatever kind of definition `undefiner'
  +handles."
  +  (invalid-form-for-type syntax form (undefiner-type undefiner)))
  +
   (defclass simple-undefiner (undefiner)
     ((%undefiner-type :reader undefiner-type
                       :initform (error "A description must be provided.")
  
positive.code: 
  (define-simple-undefiner (defpackage "package") (syntax name form)
    (delete-package name))
  
negative.code:                         :initarg :undefiner-function)))
  
  (defmethod definition-name ((undefiner simple-undefiner) (syntax lisp-syntax) (form form))
    (invalid-form undefiner syntax form))
  
  (defmethod definition-name ((undefiner simple-undefiner) (syntax lisp-syntax) (form list-form))
    (if (>= (length (form-children form)) 2)
  