{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} import Data.Kind (Type) main :: IO () main = pure () -- Some type classes class Kinded x where type Kind x :: Type class Kinded x => Singlify x where data Singleton x :: Kind x -> Type -- Now some instances for above data X data MyKind = A instance Kinded X where type Kind X = MyKind instance Singlify X where data Singleton X s where SingA :: Singleton X 'A