anchor.diff:  
   (defun get-neighbours (index array)
     (loop for pair in (get-neighbouring-positions index)
  -     collect (aref world (first pair) (second pair))))
  -
  -(destructuring-bind (x y) '(1 2)
  -  y)
  +     collect (aref array (first pair) (second pair))))
   
   (defun get-neighbouring-positions (index)
     (remove-if #'pair-out-of-bounds
  
positive.code:   (let ((row (floor (/ index *world-width*))))
      (list (- index (* row *world-width*))  row)))
  
  
  (defun print-world (world))
  
negative.code: 
  (defun step (world)
    (loop
       for index below (array-total-size world)
       for cell = (row-major-aref world index)
       do
         (when (alive? cell)
           (case (length (get-live-neighbours index world))
             ((2 3) (setf cell 1))
             (otherwise (setf cell 0))))
         (when (dead? cell)
           (case (length (get-live-neighbours index world))
             (3 (setf cell 1))
             (otherwise (setf cell 0))))))
  
  