(defun iterate-memories (array memory-rereader) "
closure (idx) -> array updated at idx
Minimises current energy at an idx by iterating through
memory-rereader.
Note that your method of picking idxes factors into
the Lyapunov condition that guarantees convergence. "
(lambda (idx)
(loop for (memory looped) = (funcall memory-rereader)
summing (diff-diff-signs idx array memory) into energy-minimises
while (not looped)
finally
(setf (aref array idx) (b2s energy-minimises))
(return (values array)))))