Преобразование типов данных
| Лицензия | BSD-стиль (см. файл LICENSE в дистрибутиве) |
|---|---|
| Поддержка | libraries@haskell.org |
| Стабильность | экспериментальная |
| Переносимость | непереносимая |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
data Coercion a b where Исходный код
Репрезентативное равенство. Если Coercion a b содержит какое-то завершающее значение, то тип a имеет такое же базовое представление, как тип b.
Чтобы использовать это равенство на практике, выполните сопоставление с образцом на Coercion a b, чтобы получить экземпляр Coercible a b, а затем используйте coerce, чтобы применить его.
С момента: 4.7.0.0
Экземпляры
| Category k (Coercion k) | |
| TestCoercion k (Coercion k a) | |
| Coercible k a b => Bounded (Coercion k a b) | |
| Coercible k a b => Enum (Coercion k a b) | |
| Eq (Coercion k a b) | |
| (Coercible * a b, Data a, Data b) => Data (Coercion * a b) | |
| Ord (Coercion k a b) | |
| Coercible k a b => Read (Coercion k a b) | |
| Show (Coercion k a b) |
coerceWith :: Coercion a b -> a -> b Исходный код
Безопасное приведение типов, используя репрезентативное равенство
sym :: forall a b. Coercion a b -> Coercion b a Исходный код
Симметрия репрезентативного равенства
trans :: Coercion a b -> Coercion b c -> Coercion a c Исходный код
Транзитивность репрезентативного равенства
repr :: (a :~: b) -> Coercion a b Исходный код
Преобразование пропозиционального (номинального) равенства в репрезентативное равенство
class TestCoercion f where Исходный код
Этот класс содержит типы, где вы можете узнать равенство двух типов из информации, содержащейся в терминах. Как правило, только типы-синглтоны должны принадлежать этому классу.
Методы
testCoercion :: f a -> f b -> Maybe (Coercion a b) Исходный код
Условно докажите репрезентативное равенство a и b.
Экземпляры
| TestCoercion k (Coercion k a) | |
| TestCoercion k ((:~:) k a) |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Data-Type-Coercion.html