mkResult :: M.Matrix -> Result
mkResult m
  | any M.isWinningSequence $ M.rowsOf m ++ M.columnsOf m ++ M.diagonalsOf m = Won
  | all (all C.isMarked) (M.getCells m) = Tied
  | otherwise = InProgress
mkResult :: M.Matrix -> Result
mkResult m
  | any M.isWinningSequence $ M.rowsOf m ++ M.columnsOf m ++ M.diagonalsOf m = Won
  | all (all C.isMarked) (M.getCells m) = Tied
  | otherwise = InProgress
mkResult m
  | any M.isWinningSequence $ M.rowsOf m ++ M.columnsOf m ++ M.diagonalsOf m = Won
  | all (all C.isMarked) (M.getCells m) = Tied
  | otherwise = InProgress