Data.Proxy

base-4.10.1.0: Basic libraries

License | BSD-style (see the LICENSE file in the distribution)
Maintainer | libraries@haskell.org
Stability | experimental
Portability | portable
Safe Haskell | Trustworthy
Language | Haskell2010

Data.Proxy

Description

Definition of a Proxy type (poly-kinded in GHC)

Since: 4.7.0.0

Synopsis

- data Proxy t = Proxy
- asProxyTypeOf :: a -> proxy a -> a
- data KProxy (t :: *) = KProxy

# Documentation

data Proxy t Source #

A concrete, poly-kinded proxy type

Constructors

Proxy |

Instances

Generic1 k (Proxy k) # |
Associated Types type Rep1 (Proxy k) (f :: Proxy k -> *) :: k -> * Source # Methods from1 :: f a -> Rep1 (Proxy k) f a Source # to1 :: Rep1 (Proxy k) f a -> f a Source #
Monad (Proxy *) # | Since: 4.7.0.0
Methods (>>=) :: Proxy * a -> (a -> Proxy * b) -> Proxy * b Source # (>>) :: Proxy * a -> Proxy * b -> Proxy * b Source # return :: a -> Proxy * a Source # fail :: String -> Proxy * a Source #
Functor (Proxy *) # | Since: 4.7.0.0
Methods fmap :: (a -> b) -> Proxy * a -> Proxy * b Source # (<$) :: a -> Proxy * b -> Proxy * a Source #
Applicative (Proxy *) # | Since: 4.7.0.0
Methods pure :: a -> Proxy * a Source # (<*>) :: Proxy * (a -> b) -> Proxy * a -> Proxy * b Source # liftA2 :: (a -> b -> c) -> Proxy * a -> Proxy * b -> Proxy * c Source # (*>) :: Proxy * a -> Proxy * b -> Proxy * b Source # (<*) :: Proxy * a -> Proxy * b -> Proxy * a Source #
Foldable (Proxy *) # | Since: 4.7.0.0
Methods fold :: Monoid m => Proxy * m -> m Source # foldMap :: Monoid m => (a -> m) -> Proxy * a -> m Source # foldr :: (a -> b -> b) -> b -> Proxy * a -> b Source # foldr' :: (a -> b -> b) -> b -> Proxy * a -> b Source # foldl :: (b -> a -> b) -> b -> Proxy * a -> b Source # foldl' :: (b -> a -> b) -> b -> Proxy * a -> b Source # foldr1 :: (a -> a -> a) -> Proxy * a -> a Source # foldl1 :: (a -> a -> a) -> Proxy * a -> a Source # toList :: Proxy * a -> [a] Source # null :: Proxy * a -> Bool Source # length :: Proxy * a -> Int Source # elem :: Eq a => a -> Proxy * a -> Bool Source # maximum :: Ord a => Proxy * a -> a Source # minimum :: Ord a => Proxy * a -> a Source # sum :: Num a => Proxy * a -> a Source # product :: Num a => Proxy * a -> a Source #
Traversable (Proxy *) # | Since: 4.7.0.0
Methods traverse :: Applicative f => (a -> f b) -> Proxy * a -> f (Proxy * b) Source # sequenceA :: Applicative f => Proxy * (f a) -> f (Proxy * a) Source # mapM :: Monad m => (a -> m b) -> Proxy * a -> m (Proxy * b) Source # sequence :: Monad m => Proxy * (m a) -> m (Proxy * a) Source #
MonadPlus (Proxy *) # | Since: 4.9.0.0
Methods mzero :: Proxy * a Source # mplus :: Proxy * a -> Proxy * a -> Proxy * a Source #
Alternative (Proxy *) # | Since: 4.9.0.0
Methods empty :: Proxy * a Source # (<|>) :: Proxy * a -> Proxy * a -> Proxy * a Source # some :: Proxy * a -> Proxy * [a] Source # many :: Proxy * a -> Proxy * [a] Source #
MonadZip (Proxy *) # | Since: 4.9.0.0
Methods mzip :: Proxy * a -> Proxy * b -> Proxy * (a, b) Source # mzipWith :: (a -> b -> c) -> Proxy * a -> Proxy * b -> Proxy * c Source # munzip :: Proxy * (a, b) -> (Proxy * a, Proxy * b) Source #
Show1 (Proxy *) # | Since: 4.9.0.0
Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Proxy * a -> ShowS Source # liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Proxy * a] -> ShowS Source #
Read1 (Proxy *) # | Since: 4.9.0.0
Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Proxy * a) Source # liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Proxy * a] Source # liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Proxy * a) Source # liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Proxy * a] Source #
Ord1 (Proxy *) # | Since: 4.9.0.0
Methods liftCompare :: (a -> b -> Ordering) -> Proxy * a -> Proxy * b -> Ordering Source #
Eq1 (Proxy *) # | Since: 4.9.0.0
Methods liftEq :: (a -> b -> Bool) -> Proxy * a -> Proxy * b -> Bool Source #
Bounded (Proxy k t) # |
Methods minBound :: Proxy k t Source # maxBound :: Proxy k t Source #
Enum (Proxy k s) # | Since: 4.7.0.0
Methods succ :: Proxy k s -> Proxy k s Source # pred :: Proxy k s -> Proxy k s Source # toEnum :: Int -> Proxy k s Source # fromEnum :: Proxy k s -> Int Source # enumFrom :: Proxy k s -> [Proxy k s] Source # enumFromThen :: Proxy k s -> Proxy k s -> [Proxy k s] Source # enumFromTo :: Proxy k s -> Proxy k s -> [Proxy k s] Source # enumFromThenTo :: Proxy k s -> Proxy k s -> Proxy k s -> [Proxy k s] Source #
Eq (Proxy k s) # | Since: 4.7.0.0
Methods (==) :: Proxy k s -> Proxy k s -> Bool Source # (/=) :: Proxy k s -> Proxy k s -> Bool Source #
Data t => Data (Proxy * t) # | Since: 4.7.0.0
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Proxy * t -> c (Proxy * t) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Proxy * t) Source # toConstr :: Proxy * t -> Constr Source # dataTypeOf :: Proxy * t -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Proxy * t)) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Proxy * t)) Source # gmapT :: (forall b. Data b => b -> b) -> Proxy * t -> Proxy * t Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Proxy * t -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Proxy * t -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Proxy * t -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Proxy * t -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Proxy * t -> m (Proxy * t) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Proxy * t -> m (Proxy * t) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Proxy * t -> m (Proxy * t) Source #
Ord (Proxy k s) # | Since: 4.7.0.0
Methods compare :: Proxy k s -> Proxy k s -> Ordering Source # (<) :: Proxy k s -> Proxy k s -> Bool Source # (<=) :: Proxy k s -> Proxy k s -> Bool Source # (>) :: Proxy k s -> Proxy k s -> Bool Source # (>=) :: Proxy k s -> Proxy k s -> Bool Source # max :: Proxy k s -> Proxy k s -> Proxy k s Source # min :: Proxy k s -> Proxy k s -> Proxy k s Source #
Read (Proxy k s) # | Since: 4.7.0.0
Methods readsPrec :: Int -> ReadS (Proxy k s) Source # readList :: ReadS [Proxy k s] Source # readPrec :: ReadPrec (Proxy k s) Source # readListPrec :: ReadPrec [Proxy k s] Source #
Show (Proxy k s) # | Since: 4.7.0.0
Methods showsPrec :: Int -> Proxy k s -> ShowS Source # show :: Proxy k s -> String Source # showList :: [Proxy k s] -> ShowS Source #
Ix (Proxy k s) # | Since: 4.7.0.0
Methods range :: (Proxy k s, Proxy k s) -> [Proxy k s] Source # index :: (Proxy k s, Proxy k s) -> Proxy k s -> Int Source # unsafeIndex :: (Proxy k s, Proxy k s) -> Proxy k s -> Int inRange :: (Proxy k s, Proxy k s) -> Proxy k s -> Bool Source # rangeSize :: (Proxy k s, Proxy k s) -> Int Source # unsafeRangeSize :: (Proxy k s, Proxy k s) -> Int
Generic (Proxy k t) # |
Associated Types type Rep (Proxy k t) :: * -> * Source # Methods from :: Proxy k t -> Rep (Proxy k t) x Source # to :: Rep (Proxy k t) x -> Proxy k t Source #
Semigroup (Proxy k s) # | Since: 4.9.0.0
Methods (<>) :: Proxy k s -> Proxy k s -> Proxy k s Source # sconcat :: NonEmpty (Proxy k s) -> Proxy k s Source # stimes :: Integral b => b -> Proxy k s -> Proxy k s Source #
Monoid (Proxy k s) # | Since: 4.7.0.0
Methods mempty :: Proxy k s Source # mappend :: Proxy k s -> Proxy k s -> Proxy k s Source # mconcat :: [Proxy k s] -> Proxy k s Source #
type Rep1 k (Proxy k) # |
type Rep1 k (Proxy k) = D1 k (MetaData "Proxy" "Data.Proxy" "base" False) (C1 k (MetaCons "Proxy" PrefixI False) (U1 k))
type Rep (Proxy k t) # |
type Rep (Proxy k t) = D1 * (MetaData "Proxy" "Data.Proxy" "base" False) (C1 * (MetaCons "Proxy" PrefixI False) (U1 *))

asProxyTypeOf :: a -> proxy a -> a Source #

`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.

data KProxy (t :: *) Source #

A concrete, promotable proxy type, for use at the kind level There are no instances for this because it is intended at the kind level only

Constructors

KProxy |