anchor.diff:                                      'base-char
                                       'character)
                     :initial-contents string)))
  +
  +(declaim (inline identity))
  +(defun identity (thing)
  +  thing)
  +
  +(declaim (inline complement))
  +(defun complement (fn)
  +  #'(lambda (&rest args) (not (apply fn args))))
  +
  +(defun set-difference (list-1 list-2)
  +  (let ((result '()))
  +    (dolist (e list-1)
  +      (when (not (member e list-2))
  +	(setq result (cons e result))))
  +    result))
  +
  +(defun union (list-1 list-2)
  +  (let ((result (copy-list list-1)))
  +    (dolist (e list-2)
  +      (when (not (member e list-1))
  +	(setq result (cons e result))))
  +    result))
  +
  +(defun intersection (list-1 list-2)
  +  (when list-1
  +    (if (member (first list-1) list-2)
  +        (cons (first list-1) (intersection (rest list-1) list-2))
  +        (intersection (rest list-1) list-2))))
   
   (declaim (special * ** ***))
   
  
positive.code:          (error "TODO: character peek."))
          (t (error "Bad peek type ~S." peek-type))))
  
  (defun raise-undefined-function (invoked-through &rest args)
    (declare (ignore args))
    (write-char #\!)
    (write-char #\#)
    (when (symbolp invoked-through)
      (write-string (symbol-name invoked-through)))
    (loop (%hlt)))
  
  (defun raise-unbound-error (symbol)
    (write-char #\!)
    (write-char #\*)
    (write-string (symbol-name symbol))
    (loop (%hlt)))
  
  (defun raise-type-error (datum expected-type)
  
negative.code:   (write datum)
    (write-char #\Space)
    (write arguments)
    (backtrace)
    (loop (%hlt)))
  
  ;; NOTE: incomplete.
  