anchor.diff:                   ((true-with-probability 10/11) style-of-self)
                    (t (aref (styles town) (random (length (styles town)))))))
              (population town))))))
  -
  -(defgeneric tick (town)
  -  (:documentation "Nondestructively returns the next iteration of the simulation.")
  -  (:method ((town town-snapshot))
  -    (make-instance 'town-snapshot
  -                   :time                (1+ (ticks town))
  -                   :population          (deconform town)
  -                   :styles              (styles town)
  -                   :hipsterish-tendency (hipsterish-tendency town))))
             
   (defgeneric tick! (town)
     (:documentation "Destructively modifies a snapshot to become the next iteration of the simulation.")
  
positive.code:   (with-accessors ((ticks ticks) (population population) (tendency hipsterish-tendency) (styles styles) (period period)) object
      (print-unreadable-object (object stream :type t)
        (format stream ":POPULATION ~a :TENDENCY ~4,2f% :STYLES ~a :DELAY ~a @ t = ~a" (length population) (* tendency 100) (length styles) period ticks))))
  
  ;;; Other methods
  
  
negative.code:                                                  1/100))))))
  
  ;;; When seeing the development of the town, we need to repeat things a lot.
  (defmacro with-town-iterator ((var town &key (times 20) (tick-time :before) copyp) &body body)
    "Creates a loop that evolves a town, allowing the user to do something for each generation of the town. Can be made nondestructive by passing non-nil to copyp."
    `(let ((,var ,(if copyp `(copy-town ,town) town)))
       (assert (typep ,var 'town-snapshot))
       (assert (typep ,tick-time '(member :before :after)))
       (assert (typep ,times '(integer 1)))
  