#ifdef LANGUAGE_DataKinds
#endif
module Data.Proxy
( Proxy (..)
, proxy
, reproxy
, reproxyRep
, reproxyK1
, reproxyM1
, reproxyFst
, reproxySnd
) where
import GHC.Generics
data Proxy a = Proxy
proxy :: a -> Proxy a
proxy _ = Proxy
reproxy :: t a -> Proxy b
reproxy _ = Proxy
reproxyRep :: t a -> Proxy (Rep a p)
reproxyRep = reproxy
reproxyK1 :: t (K1 i c p) -> Proxy c
reproxyK1 = reproxy
reproxyM1 :: t (M1 i c f p) -> Proxy (f p)
reproxyM1 = reproxy
reproxyFst :: t ((f :*: g) p) -> Proxy (f p)
reproxyFst = reproxy
reproxySnd :: t ((f :*: g) p) -> Proxy (g p)
reproxySnd = reproxy