anchor.diff:             (not (string= lang "dot")))
         (output-dot-file program output function lang)
         (output-function function output)))
  -
  -;;;;;;;;;;;;;;;;
  -;;; Comparisions
  -;;;;;;;;;;;;;;;;
  -
  -(defmacro compare-op (a b)
  -  "The monoid for comparisions"
  -  `(cond ((> 0.0 ,a) -1)
  -        ((< 0.0 ,a) 1)
  -        (t ,b)
  -        ))
  -
  -(defmacro compare-nest (&rest vals)
  -  (if vals
  -  `(compare-op ,(car vals) (compare-nest ,@(cdr vals))
  -  ) 0))
  -
  -(defun string-compare (a b)
  -  (cond ((string< a b) -1)
  -        ((string> a b) 1)
  -        (t 0)))
  -
  -(defun fixnum-compare (a b)
  -  (cond ((< a b) -1)
  -        ((> a b) 1)
  -        (t 0)))
  -
  -;;;;;;;;;;;
  -;;; Strings
  -;;;;;;;;;;;
  -
  -(defun string-upcase-p (str)
  -  (string= str (string-upcase str)))
  -
  -(defun string-downcase-p (str)
  -  (string= str (string-downcase str)))
  
positive.code:     (cons
       (etypecase b
         (atom 1)
         (list (let ((c (gsymbol-compare (car a) (car b))))
                 (declare (type fixnum c))
                 (if (zerop c)
                     (gsymbol-compare (cdr a) (cdr b))
                     c)))))))
  
  
  ;; (defun gsymbol-compare (a b)
  
negative.code:   "A lambda with no arguments."
    `(lambda () ,@body))
  
  ;;;;;;;;;;;;;;;;;;;;
  ;;; Comparisions ;;;
  ;;;;;;;;;;;;;;;;;;;;
  
  (defmacro or-compare-2 (compare-exp-1 compare-exp-2)
    "Short-circuit evaluatation of arguments, returning the first one that is nonzero."
    (alexandria:with-gensyms (sym1)
     `(let ((,sym1 ,compare-exp-1))
        (declare (fixnum ,sym1))
        (if (zerop ,sym1)
            ,compare-exp-2
            ,sym1))))
  
  (defmacro or-compare (&rest vals)
    "Short-circuit evaluatation of arguments, returning the first one that is nonzero."
    (cond
      ((null vals) 0)
      ((null (cdr vals)) (car vals))
      (t `(or-compare-2 ,(car vals)
                        (or-compare ,@(cdr vals))))))
  
  (defun string-compare (a b)
    (declare (type string a b))
    (cond ((string< a b) -1)
          ((string> a b) 1)
          (t 0)))
  
  (declaim (inline fixnum-compare))
  (defun fixnum-compare (a b)
    (declare (type fixnum a b))
    (cond ((< a b) -1)
          ((> a b) 1)
          (t 0)))
  
  ;;;;;;;;;;;;;;;
  ;;; Strings ;;;
  ;;;;;;;;;;;;;;;
  
  (defun string-upcase-p (str)
    (string= str (string-upcase str)))
  
  (defun string-downcase-p (str)
    (string= str (string-downcase str)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; GENERALIZED SYMBOLS ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;
  