anchor.diff:  (%define-type-symbol 'integer 'integerp)
   (%define-type-symbol 'rational 'integerp) ; ###
   (%define-type-symbol 'float 'floatp)
  +(%define-type-symbol 'standard-char 'standard-char-p)
  +(%define-type-symbol 'base-char 'base-char-p)
   (%define-type-symbol 'character 'characterp)
   (%define-type-symbol 'string 'stringp)
   (%define-type-symbol 'function 'functionp)
  
positive.code: (defun compile-or-type (object type)
    `(or ,@(mapcar (lambda (x) `(typep ,object ',x)) (rest type))))
  (%define-compound-type-optimizer 'or 'compile-or-type)
  )
  
  (defun member-type (object type)
  
negative.code:            (dolist (type (rest t1) (values t t))
               (unless (subtypep type t2)
                 (return (values nil t)))))
            ((and (consp t2)
                  (eql (first t2) 'or))
             (dolist (type (rest t2) (values nil t))
               (when (subtypep t1 type)
                 (return (values t t)))))
  	  (t (values nil t)))))
  
  (defun subclassp (class-1 class-2)
  