Data.Proxy
| Лицензия | BSD-style (см. файл LICENSE в дистрибутиве) |
|---|---|
| Поддержка | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | переносимая |
| Safe Haskell | Safe |
| Язык | Haskell2010 |
Описание
Определение типа Proxy (поликиндного в GHC)
С момента: base-4.7.0.0
data Proxy (t :: k) Исходный код
Proxy — это тип, который не содержит данных, но имеет фантомный параметр произвольного типа (или даже рода). Его использование заключается в предоставлении информации о типе, даже если нет доступного значения этого типа (или создание такого значения может быть слишком дорогостоящим).
Исторически, Proxy :: Proxy a — более безопасная альтернатива undefined :: a конструкции.
>>> Proxy :: Proxy (Void, Int -> Int) Proxy
Proxy может даже содержать типы более высоких родов,
>>> Proxy :: Proxy Either Proxy
>>> Proxy :: Proxy Functor Proxy
>>> Proxy :: Proxy complicatedStructure Proxy
Конструкторы
| Proxy |
Экземпляры
| Generic1 (Proxy :: k -> Type) Источник | |
Определено в GHC.Internal.Generics | |
| Eq1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
| Ord1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Read1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Proxy a) Источник liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Proxy a] Источник liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Proxy a) Источник liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Proxy a] Источник | |
| Show1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
| Contravariant (Proxy :: Type -> Type) Источник | |
| Alternative (Proxy :: Type -> Type) Source | Since: base-4.9.0.0 |
| Applicative (Proxy :: Type -> Type) Source | Since: base-4.7.0.0 |
| Functor (Proxy :: Type -> Type) Source | Since: base-4.7.0.0 |
| Monad (Proxy :: Type -> Type) Source | Since: base-4.7.0.0 |
| MonadPlus (Proxy :: Type -> Type) Source | Since: base-4.9.0.0 |
| MonadZip (Proxy :: Type -> Type) Source | Since: ghc-internal-4.9.0.0 |
Определено в GHC.Internal.Control.Monad.Zip Краткое описание методовmzip :: Proxy a -> Proxy b -> Proxy (a, b) Исходный код mzipWith :: (a -> b -> c) -> Proxy a -> Proxy b -> Proxy c Исходный код munzip :: Proxy (a, b) -> (Proxy a, Proxy b) Исходный код | |
| Foldable (Proxy :: Type -> Type) Исходный код | С версии: base-4.7.0.0 |
Определено в GHC.Internal.Data.Foldable Краткое описание методовfold :: Monoid m => Proxy m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Proxy a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Proxy a -> m Исходный код foldr :: (a -> b -> b) -> b -> Proxy a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Proxy a -> b Исходный код foldl :: (b -> a -> b) -> b -> Proxy a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Proxy a -> b Исходный код foldr1 :: (a -> a -> a) -> Proxy a -> a Исходный код foldl1 :: (a -> a -> a) -> Proxy a -> a Исходный код toList :: Proxy a -> [a] Исходный код null :: Proxy a -> Bool Исходный код length :: Proxy a -> Int Исходный код elem :: Eq a => a -> Proxy a -> Bool Исходный код maximum :: Ord a => Proxy a -> a Исходный код minimum :: Ord a => Proxy a -> a Исходный код sum :: Num a => Proxy a -> a Исходный код product :: Num a => Proxy a -> a Исходный код | |
| Traversable (Proxy :: Type -> Type) Исходный код | С версии: base-4.7.0.0 |
Определено в GHC.Internal.Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Proxy a -> f (Proxy b) Исходный код sequenceA :: Applicative f => Proxy (f a) -> f (Proxy a) Исходный код mapM :: Monad m => (a -> m b) -> Proxy a -> m (Proxy b) Исходный код sequence :: Monad m => Proxy (m a) -> m (Proxy a) Исходный код | |
| Monoid (Proxy s) Исходный код | С версии: base-4.7.0.0 |
| Semigroup (Proxy s) Source | Since: base-4.9.0.0 |
| Data t => Data (Proxy t) Source | Since: base-4.7.0.0 |
Defined in GHC.Internal.Data.Data Методы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 t0 => (forall d. Data d => c (t0 d)) -> Maybe (c (Proxy t)) Source dataCast2 :: Typeable t0 => (forall d e. (Data d, Data e) => c (t0 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 :: forall r r'. (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 | |
| Bounded (Proxy t) Source | Since: base-4.7.0.0 |
| Enum (Proxy s) Source | Since: base-4.7.0.0 |
Определено в GHC.Internal.Data.Proxy Методыsucc :: Proxy s -> Proxy s Source pred :: Proxy s -> Proxy s Source toEnum :: Int -> Proxy s Source fromEnum :: Proxy s -> Int Source enumFrom :: Proxy s -> [Proxy s] Source enumFromThen :: Proxy s -> Proxy s -> [Proxy s] Source enumFromTo :: Proxy s -> Proxy s -> [Proxy s] Source enumFromThenTo :: Proxy s -> Proxy s -> Proxy s -> [Proxy s] Source | |
| Generic (Proxy t) Source | |
Определено в GHC.Internal.Generics | |
| Ix (Proxy s) Source | Since: base-4.7.0.0 |
Определено в GHC.Internal.Data.Proxy Методыrange :: (Proxy s, Proxy s) -> [Proxy s] Source index :: (Proxy s, Proxy s) -> Proxy s -> Int Source unsafeIndex :: (Proxy s, Proxy s) -> Proxy s -> Int Source inRange :: (Proxy s, Proxy s) -> Proxy s -> Bool Source rangeSize :: (Proxy s, Proxy s) -> Int Source unsafeRangeSize :: (Proxy s, Proxy s) -> Int Source | |
| Read (Proxy t) Source | Since: base-4.7.0.0 |
| Show (Proxy s) Источник | С момента: base-4.7.0.0 |
| Eq (Proxy s) Источник | С момента: base-4.7.0.0 |
| Ord (Proxy s) Источник | С момента: base-4.7.0.0 |
Определено в GHC.Internal.Data.Proxy | |
| type Rep1 (Proxy :: k -> Тип) Источник | С момента: base-4.6.0.0 |
| type Rep (Proxy t) Источник | С момента: base-4.6.0.0 |
asProxyTypeOf :: a -> proxy a -> a Source
asProxyTypeOf представляет собой ограниченную по типу версию const. Обычно используется как инфиксный оператор, и его типизация требует, чтобы его первый аргумент (который, как правило, перегружен) имел тот же тип, что и метка второго.
>>> import GHC.Internal.Word >>> :type asProxyTypeOf 123 (Proxy :: Proxy Word8) asProxyTypeOf 123 (Proxy :: Proxy Word8) :: Word8
Обратите внимание на строчную proxy в определении. Это позволяет передавать в функцию любой тип-конструктор с одним аргументом; например, мы также можем написать
>>> import GHC.Internal.Word >>> :type asProxyTypeOf 123 (Just (undefined :: Word8)) asProxyTypeOf 123 (Just (undefined :: Word8)) :: Word8
Конкретный, продвинутый тип прокси, используемый на уровне рода. Для него нет инстансов, так как он предназначен только для уровня рода.
Конструкторы
| KProxy |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/Data-Proxy.html