Data.Type.Coercion
| Лицензия | BSD-стиль (см. файл LICENSE в дистрибутиве) |
|---|---|
| Поддерживающий | libraries@haskell.org |
| Устойчивость | стабильная |
| Переносимость | не переносимая |
| Safe 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 | |
| (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 |
| 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 Источник |
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.
Примеры
| TestCoercion SNat Исходный код | С момента выпуска: base-4.18.0.0 |
Определено в GHC.Internal.TypeNats МетодыtestCoercion :: forall (a :: Nat) (b :: Nat). SNat a -> SNat b -> Maybe (Coercion a b) Исходный код | |
| TestCoercion SChar Исходный код | С момента выпуска: base-4.18.0.0 |
Определено в GHC.Internal.TypeLits МетодыtestCoercion :: forall (a :: Char) (b :: Char). SChar a -> SChar b -> Maybe (Coercion a b) Исходный код | |
| TestCoercion SSymbol Исходный код | С момента выпуска: base-4.18.0.0 |
Определено в GHC.Internal.TypeLits МетодыtestCoercion :: forall (a :: Symbol) (b :: Symbol). SSymbol a -> SSymbol b -> Maybe (Coercion a b) Исходный код | |
| TestCoercion (Coercion a :: k -> Тип) Исходный код | С момента выпуска: base-4.7.0.0 |
Определено в GHC.Internal.Data.Type.Coercion МетодыtestCoercion :: forall (a0 :: k) (b :: k). Coercion a a0 -> Coercion a b -> Maybe (Coercion a0 b) Исходный код | |
| TestCoercion ((:~:) a :: k -> Тип) Исходный код | С момента выпуска: base-4.7.0.0 |
Определено в GHC.Internal.Data.Type.Coercion МетодыtestCoercion :: forall (a0 :: k) (b :: k). (a :~: a0) -> (a :~: b) -> Maybe (Coercion a0 b) Исходный код | |
| TestCoercion ((:~~:) a :: k -> Тип) Исходный код | С момента выпуска: base-4.10.0.0 |
Определено в GHC.Internal.Data.Type.Coercion МетодыtestCoercion :: forall (a0 :: k) (b :: k). (a :~~: a0) -> (a :~~: b) -> Maybe (Coercion a0 b) Исходный код | |
© 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-Type-Coercion.html