anchor.diff:    (with-slots (height width cells) p
       (loop for x below height do
            (loop for y below width
  -            do (setf (puzzle (aref cells x y)) p)))))
  +            do (setf (puzzle-of (aref cells x y)) p)))))
   
   (defun puzzle-cell (p x y)
     "get the cell object in `p` at coordinates (`x`, `y`)"
  
positive.code: (in-package :kakuro)
  
  (defconstant +max-digit+ 9)
  
  (defclass cell ()
    ((x :accessor x :initarg :x :type (integer 0 *)
        :documentation "x-coordinate of the cell, origin top-left, going down")
     (y :accessor y :initarg :y :type (integer 0 *)
        :documentation "y-coordinate of the cell, origin top-left, going right")
     (puzzle :accessor puzzle :initarg :puzzle :type puzzle
             :documentation "puzzle to which this cell belongs")))
  
  (defclass constraint-cell (cell)
    ((horiz :accessor horiz :initarg :horiz :initform nil
            :documentation "horizontal sum constraint")
     (verti :accessor verti :initarg :verti :initform nil
            :documentation "vertical sum constraint"))
    (:documentation "cell representing a constraint on the sum of other cells"))
  
  (defmethod print-object ((c constraint-cell) stream)
    (format stream "(~a ~a)" (verti c) (horiz c)))
  
  (defclass blank-cell (cell)
    ((horiz :accessor horiz :initarg :horiz :initform nil :type constraint-cell
            :documentation "horizontal constraint cell")
     (verti :accessor verti :initarg :verti :initform nil :type constraint-cell
            :documentation "vertical constraint cell")
     (mark :accessor mark :initarg :mark :initform nil
           :documentation "number written in the cell"))
    (:documentation "cell representing a player-fillable entry with constraints"))
  
negative.code:                 for cell = (entry-cell (read stream) x y)
                  do (setf (aref cells x y) cell)
                  if (typep cell 'blank-cell)
                  do (setf (constraint-row cell) (svref curr-horiz-constraints x)
                           (constraint-col cell) (svref curr-verti-constraints y))
                  else
                  if (typep cell 'wall-cell)
                  do (setf (svref curr-horiz-constraints x) nil
  