Data.Proxy
| Лицензия | В стиле BSD (см. файл LICENSE в дистрибутиве) |
|---|---|
| Сопровождающий | libraries@haskell.org |
| Стабильность | стабильный |
| Переносимость | переносимый |
| Безопасный Haskell | Safe |
| Язык | Haskell2010 |
Описание
Определение типа Proxy (в GHC поликиндового)
Начиная с: 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 |
Экземпляры
| Generic1 (Proxy :: k -> Type) Источник | |
Определено в GHC.Internal.Generics | |
| Eq1 (Proxy :: Type -> Type) Источник | Since: base-4.9.0.0 |
| Ord1 (Proxy :: Type -> Type) Источник | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Read1 (Proxy :: Type -> Type) Источник | Since: 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) Источник | Since: base-4.9.0.0 |
| Contravariant (Proxy :: Type -> Type) Источник | |
| Alternative (Proxy :: Type -> Type) Источник | Since: base-4.9.0.0 |
| Applicative (Proxy :: Type -> Type) Источник | Since: base-4.7.0.0 |
| Functor (Proxy :: Type -> Type) Источник | Since: base-4.7.0.0 |
| Monad (Proxy :: Type -> Type) Источник | Since: base-4.7.0.0 |
| MonadPlus (Proxy :: Type -> Type) Источник | Since: base-4.9.0.0 |
| MonadZip (Proxy :: Type -> Type) Источник | Since: ghc-internal-4.9.0.0 |
| Foldable (Proxy :: Type -> Type) Источник | Since: 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 Источник | |
Определено в GHC.Internal.Data.Proxy МетодыreadsPrec :: Int -> ReadS (Proxy t) Исходный код readList :: ReadS [Proxy t] Исходный код readPrec :: ReadPrec (Proxy t) Исходный код readListPrec :: ReadPrec [Proxy t] Исходный код | |
| Show (Proxy s) Исходный код | Начиная с: base-4.7.0.0 |
Определено в GHC.Internal.Data.Proxy МетодыshowsPrec :: Int -> Proxy s -> ShowS Исходный код show :: Proxy s -> String Исходный код showList :: [Proxy s] -> ShowS Исходный код | |
| type Rep1 (Proxy :: k -> Type) Исходный код | Начиная с: base-4.6.0.0 |
| type Rep (Proxy t) Исходный код | Начиная с: base-4.6.0.0 |
asProxyTypeOf :: a -> proxy a -> a Исходный код
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
data KProxy t Исходный код
Конкретный прокси-тип с возможностью повышения уровня, предназначенный для использования на уровне kind. У него нет экземпляров, поскольку он предназначен только для уровня kind
Конструкторы
| KProxy |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Proxy.html