module Dahdit.Proxy
  ( proxyFor
  , proxyForF
  , proxyForFun
  , proxyForNatF
  )
where

import Data.Proxy (Proxy (..))
import GHC.TypeLits (Nat)

proxyFor :: a -> Proxy a
proxyFor :: forall a. a -> Proxy a
proxyFor a
_ = forall {k} (t :: k). Proxy t
Proxy

proxyForF :: f a -> Proxy a
proxyForF :: forall (f :: * -> *) a. f a -> Proxy a
proxyForF f a
_ = forall {k} (t :: k). Proxy t
Proxy

proxyForFun :: (a -> x) -> Proxy a
proxyForFun :: forall a x. (a -> x) -> Proxy a
proxyForFun a -> x
_ = 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
_ = forall {k} (t :: k). Proxy t
Proxy