{-# LANGUAGE TypeFamilies, DataKinds, GADTs, StandaloneDeriving, TemplateHaskell, GeneralizedNewtypeDeriving #-}
module TICTACTOE (TICTACTOE, CELL(..), GAME(..), (?), SOLVE(..), tq) where

import GHC.TypeLits

import TH

class Game (a :: GAME) where
  (?) :: SOLVE a

instance Game START where
  (?) = GameStarting
instance Game PROGRESS where
  (?) = GameProgress
instance Game DRAW where
  (?) = Draw
instance Game WINNERA where
  (?) = WinnerA
instance Game WINNERB where
  (?) = WinnerB

type instance TICTACTOE NOBODY NOBODY NOBODY NOBODY NOBODY NOBODY NOBODY NOBODY NOBODY = START

tictactoe
