Data.Proxy
| License | BSD-style (see the LICENSE file in the distribution) |
|---|---|
| Maintainer | libraries@haskell.org |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Описание
Определение типа Proxy (поли-киндированного в GHC)
Since: base-4.7.0.0
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 |
Определено в 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 |
Определено в 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) Исходный код | |
| MonadPlus (Proxy :: Type -> Type) | С момента: base-4.9.0.0 |
Определено в Data.Proxy | |
| Alternative (Proxy :: Type -> Type) | С момента: base-4.9.0.0 |
Определено в Data.Proxy Методыempty :: Proxy a Исходный код (<|>) :: Proxy a -> Proxy a -> Proxy a Исходный код some :: Proxy a -> Proxy [a] Исходный код many :: Proxy a -> Proxy [a] Исходный код | |
| MonadZip (Proxy :: Type -> Type) | С момента: base-4.9.0.0 |
| Show1 (Proxy :: Type -> Type) | Since: base-4.9.0.0 |
| Read1 (Proxy :: Type -> Type) | Since: base-4.9.0.0 |
Defined in Data.Functor.Classes Методы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 :: Type -> Type) | Since: base-4.9.0.0 |
Defined in Data.Functor.Classes | |
| Eq1 (Proxy :: Type -> Type) | Since: base-4.9.0.0 |
| Contravariant (Proxy :: Type -> Type) | |
| Bounded (Proxy t) | Since: base-4.7.0.0 |
| Enum (Proxy s) | Since: base-4.7.0.0 |
Определено в 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 | |
| Eq (Proxy s) | Since: base-4.7.0.0 |
| Data t => Data (Proxy t) | Since: base-4.7.0.0 |
Определено в 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 | |
| Ord (Proxy s) | Since: base-4.7.0.0 |
Определено в Data.Proxy Методы(<>) :: Proxy s -> Proxy s -> Proxy s Исходный код sconcat :: NonEmpty (Proxy s) -> Proxy s Исходный код stimes :: Integral b => b -> Proxy s -> Proxy s Исходный код | |
| Monoid (Proxy s) | С момента: base-4.7.0.0 |
Определено в Data.Proxy Методыmempty :: Proxy s Исходный код mappend :: Proxy s -> Proxy s -> Proxy s Исходный код mconcat :: [Proxy s] -> Proxy s Исходный код | |
| type Rep1 (Proxy :: k -> Тип) | |
| type Rep (Proxy t) | |
asProxyTypeOf :: a -> proxy a -> a Исходный код
asProxyTypeOf — это версия const, ограниченная типом. Обычно используется как инфиксный оператор, а его типизация заставляет первый аргумент (который обычно перегружен) иметь тот же тип, что и метка второго.
>>> import Data.Word >>> :type asProxyTypeOf 123 (Proxy :: Proxy Word8) asProxyTypeOf 123 (Proxy :: Proxy Word8) :: Word8
Обратите внимание на прописную букву proxy в определении. Это позволяет передавать в функцию любой тип-конструктор с одним аргументом, например, мы также можем написать
>>> import Data.Word >>> :type asProxyTypeOf 123 (Just (undefined :: Word8)) asProxyTypeOf 123 (Just (undefined :: Word8)) :: Word8
data KProxy (t :: Тип) Исходный код
Конкретный, повышаемый тип прокси, предназначенный для использования на уровне типов. Экземпляры для него отсутствуют, поскольку он предназначен только для уровня типов
Конструкторы
| KProxy |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-Proxy.html