{-# LANGUAGE FlexibleInstances    #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Discokitty.Examples.LesJustesUniverse
  ( Universe (..)
  , UniverseN
  , universe
  , dim
  )
  where
import           Discokitty
data Universe
  = Universe
  
  | Yanek
  | Dora
  | Boris
  | Duke
  | Stepan
  | Nephew
  | Skouratov
  
  | Poet
  | Revolutionary
  | Terrorist
  | Saviour
  | Innocent
  | Tsarist
  | Alive
  
  | Life
  | Poetry
  | Chemistry
  | Propaganda
  | Bomb
  
  | IsTrue
  | IsFalse
  | IsRighteous
  | IsWrong
  | IsPlot
  deriving (Eq, Show, Bounded, Enum, Ord)
universe :: [Universe]
universe = [minBound .. maxBound]
type UniverseN = [Universe]
instance Dim UniverseN where
  dim = length