anchor.diff:  ;;;
   ;;; Symbols
   ;;;
  -(defstruct (clutter-symbol (:constructor %make-clutter-symbol (name)))
  +(defstruct (clutter-symbol (:constructor %make-clutter-symbol (name &optional interned)))
     (interned t)
     name)
   
  
positive.code:   (if intern
        (or (gethash name *symbol-table*)
            (setf (gethash name *symbol-table*) (%make-clutter-symbol name)))
        (%make-clutter-symbol name)))
  
  (defun cs (name)
    "Shorthand for clutter-symbol"
    (clutter-symbol name))
  
  (defmethod print-object ((o clutter-symbol) s)
    (princ (clutter-symbol-name o) s))
  
  ;;;
  
negative.code: (set-clutter-reader-macro-function #\" (lambda (stream char)
                                           (declare (ignore char))
                                           (clutter-read-string #\" stream)))
  (set-clutter-reader-macro-function #\. (lambda (stream char)
                                           (declare (ignore char))
                                           (clutter-symbol (read-token stream) nil)))
  
  (defun read-token (stream)
    (loop with token = (make-array 8 :adjustable t :fill-pointer 0 :element-type 'character)
  