1{-# LANGUAGE AutoDeriveTypeable, GADTs, DataKinds, KindSignatures, StandaloneDeriving, TypeOperators #-} 2 3module T10348 where 4 5import GHC.TypeLits 6import Data.Typeable 7import Data.Proxy 8 9data Foo (n :: Nat) where 10 Hey :: KnownNat n => Foo n 11 12deriving instance Show (Foo n) 13 14data T t where 15 T :: (Show t, Typeable t) => t -> T t 16 17deriving instance Show (T n) 18 19hey :: KnownNat n => T (Foo n) 20hey = T Hey 21 22ho :: T (Foo 42) 23ho = T Hey 24 25f1 :: KnownNat a => Proxy a -> TypeRep 26f1 = typeRep 27 28g2 :: KnownSymbol a => Proxy a -> TypeRep 29g2 = typeRep 30 31pEqT :: (KnownSymbol a, KnownSymbol b) => Proxy a -> Proxy b -> Maybe (a :~: b) 32pEqT Proxy Proxy = eqT 33