foundation-0.0.1: Foundation/Internal/Proxy.hs
-- |
-- Module : Foundation.Internal.Proxy
-- License : BSD-style
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
-- Stability : experimental
-- Portability : portable
--
{-# LANGUAGE CPP #-}
module Foundation.Internal.Proxy
( Proxy(..)
, asProxyTypeOf
) where
#if MIN_VERSION_base(4,7,0)
import Data.Proxy
#else
import qualified Prelude
data Proxy a = Proxy
instance Prelude.Show (Proxy a) where
showsPrec _ _ = Prelude.showString "Proxy"
-- | 'asProxyTypeOf' is a type-restricted version of 'const'.
-- It is usually used as an infix operator, and its typing forces its first
-- argument (which is usually overloaded) to have the same type as the tag
-- of the second.
asProxyTypeOf :: a -> Proxy a -> a
asProxyTypeOf = Prelude.const
{-# INLINE asProxyTypeOf #-}
#endif