anchor.diff:                                 (garden (living-room east door))
                                  (attic (living-room downstairs ladder))))
   
  +
  +(defparameter *max-label-length* 30)
  +
   ;; * generating the dot information
   
   
  
positive.code: (defun dot-name (exp)
    (substitute-if #\_ (complement #'alphanumericp) (prin1-to-string exp)))
  
  
  ;; substitute-if higher-order function
  (substitute-if 0 #'oddp '(1 2 3 4 5 6 7 8 9 10))
  ;; => (0 2 0 4 0 6 0 8 0 10)
  
  ;; complement higher-order function
  ;; (complement #'oddp) <=> (lambda (x) (not (oddp x)))
  
  (defparameter *max-label-length* 30)
  
  (defun dot-label (exp)
    (if exp
  
negative.code:                 (cdr node)))
          edges))
  
  
  (defun graph->dot (nodes edges)
    (princ "digraph{")
    (nodes->dot nodes)
    (edges->dot edges)
    (princ "}"))
  
  
  (defun dot->png (fname thunk)
  