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