Data.Type.Coercion
| Лицензия | в стиле BSD (см. файл LICENSE в дистрибутиве) |
|---|---|
| Сопровождающий | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | непереносимый |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
data Coercion (a :: k) (b :: k) where Источник
Репрезентационное равенство. Если Coercion a b содержит некоторое завершающееся значение, то тип a имеет то же базовое представление, что и тип b.
Чтобы использовать это равенство на практике, сопоставьте с образцом Coercion a b, чтобы получить экземпляр Coercible a b, а затем примените его с помощью coerce.
Начиная с: base-4.7.0.0
Экземпляры
| Category (Coercion :: k -> k -> Type) Источник | Начиная с: base-4.7.0.0 |
| TestCoercion (Coercion a :: k -> Type) Источник | Начиная с: base-4.7.0.0 |
Определён в GHC.Internal.Data.Type.Coercion | |
| Eq (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
| Ord (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
Определён в GHC.Internal.Data.Type.Coercion Методыcompare :: Coercion a b -> Coercion a b -> Ordering Источник (<) :: Coercion a b -> Coercion a b -> Bool Источник (<=) :: Coercion a b -> Coercion a b -> Bool Источник (>) :: Coercion a b -> Coercion a b -> Bool Источник (>=) :: Coercion a b -> Coercion a b -> Bool Источник max :: Coercion a b -> Coercion a b -> Coercion a b Источник min :: Coercion a b -> Coercion a b -> Coercion a b Источник | |
| (Coercible a b, Data a, Data b) => Data (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
Определён в GHC.Internal.Data.Data Методыgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Coercion a b -> c (Coercion a b) Источник gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Coercion a b) Источник toConstr :: Coercion a b -> Constr Источник dataTypeOf :: Coercion a b -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Coercion a b)) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Coercion a b)) Источник gmapT :: (forall b0. Data b0 => b0 -> b0) -> Coercion a b -> Coercion a b Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Coercion a b -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Coercion a b -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Coercion a b -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Coercion a b -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Coercion a b -> m (Coercion a b) Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Coercion a b -> m (Coercion a b) Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Coercion a b -> m (Coercion a b) Источник | |
| Coercible a b => Bounded (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
| Coercible a b => Enum (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
Определён в GHC.Internal.Data.Type.Coercion Методыsucc :: Coercion a b -> Coercion a b Источник pred :: Coercion a b -> Coercion a b Источник toEnum :: Int -> Coercion a b Источник fromEnum :: Coercion a b -> Int Источник enumFrom :: Coercion a b -> [Coercion a b] Источник enumFromThen :: Coercion a b -> Coercion a b -> [Coercion a b] Источник enumFromTo :: Coercion a b -> Coercion a b -> [Coercion a b] Источник enumFromThenTo :: Coercion a b -> Coercion a b -> Coercion a b -> [Coercion a b] Источник | |
| Coercible a b => Read (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
| Show (Coercion a b) Источник | Начиная с: base-4.7.0.0 |
coerceWith :: Coercion a b -> a -> b Источник
Приведение типов с проверкой типов, использующее репрезентационное равенство
gcoerceWith :: forall {k} (a :: k) (b :: k) r. Coercion a b -> (Coercible a b => r) -> r Источник
Обобщённая форма приведения типов с проверкой типов, использующего репрезентационное равенство
Начиная с: base-4.10.0.0
sym :: forall {k} (a :: k) (b :: k). Coercion a b -> Coercion b a Источник
Симметричность репрезентационного равенства
trans :: forall {k} (a :: k) (b :: k) (c :: k). Coercion a b -> Coercion b c -> Coercion a c Источник
Транзитивность репрезентационного равенства
repr :: forall {k} (a :: k) (b :: k). (a :~: b) -> Coercion a b Источник
Преобразование пропозиционального (номинального) равенства в репрезентационное равенство
class TestCoercion (f :: k -> Type) where Источник
Этот класс содержит типы, для которых равенство двух типов можно установить по информации, содержащейся в термах. Обычно этот класс должны населять только синглетонные типы.
Методы
testCoercion :: forall (a :: k) (b :: k). f a -> f b -> Maybe (Coercion a b) Исходный код
Условно доказывает представительное равенство a и b.
Экземпляры
© 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-Type-Coercion.html