{-# LANGUAGE TypeFamilies #-} module TypeFamilies where -- | Type family G type family G a :: * -- | A class with an associated type class A a where -- | An associated type data B a :: * -> * -- | A method f :: B a Int -- | Doc for family type family F a -- | Doc for G Int type instance G Int = Bool type instance G Float = Int instance A Int where data B Int x = Con x f = Con 3 g = Con 5