Solution (source code)

= Solution

The empty occupancy <sets> leave all nine coordinates available:

``
empty :: Board
empty = ([],[],[(r,c) | r <- [0..2], c <- [0..2]])
``

This board satisfies the <representation invariant> and gives `O` the next move.