{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE PolyKinds #-}
module Constraint.Container.Homo where
import Data.Typeable
import Prelude
import GHC.Exts (Constraint)
import GHC.TypeLits
import Type.Bool
type family Homo (a :: *) :: Constraint
type instance Homo (t,t2) = (t~t2)
type instance Homo (t,t2,t3) = (t~t2, t~t3)
type instance Homo (t,t2,t3,t4) = (t~t2, t~t3, t~t4)
type instance Homo (t,t2,t3,t4,t5) = (t~t2, t~t3, t~t4, t~t5)