With normal maps you could say:
(for [y (range 8) x (range 8)] {:x x :y y})
to get the cells with their coordinates in one big list
to update them (assuming you have a fn update-cell [cell]:
(map update-cell cells)
or if you had some data to update them with:
(map update-cell cells (repeat data))
- that data could be stuff like {:t the-time :dt ms-since-;last-update :etc other-stuff}
If you want them in a 2d grid, then you could do:
(partition 8 (for [y (range 8) x (range 8)] {:x x :y y}))
or, say you had a (defn make-cell [x y] {:x x :y y})
, you could make them:
(map (fn [y] (map (fn [x] (make-cell x y)) (range width))) (range height))
then to update them:
(map (partial map update-cell) cells)