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