module Dahdit.Proxy ( proxyFor , proxyForF , proxyForRepF , proxyForFun , proxyForNatF ) where import Data.Proxy (Proxy (..)) import GHC.Generics (Generic (..)) import GHC.TypeLits (Nat) proxyFor :: a -> Proxy a proxyFor :: forall a. a -> Proxy a proxyFor a _ = Proxy a forall {k} (t :: k). Proxy t Proxy proxyForF :: f a -> Proxy a proxyForF :: forall (f :: * -> *) a. f a -> Proxy a proxyForF f a _ = Proxy a forall {k} (t :: k). Proxy t Proxy proxyForRepF :: f t -> Rep t a -> Proxy (Rep t) proxyForRepF :: forall (f :: * -> *) t a. f t -> Rep t a -> Proxy (Rep t) proxyForRepF f t _ Rep t a _ = Proxy (Rep t) forall {k} (t :: k). Proxy t Proxy proxyForFun :: (a -> x) -> Proxy a proxyForFun :: forall a x. (a -> x) -> Proxy a proxyForFun a -> x _ = Proxy a forall {k} (t :: k). Proxy t Proxy proxyForNatF :: forall (n :: Nat) f. f n -> Proxy n proxyForNatF :: forall (n :: Nat) (f :: Nat -> *). f n -> Proxy n proxyForNatF f n _ = Proxy n forall {k} (t :: k). Proxy t Proxy