Data.Functor.Classes
| Авторские права | (c) Ross Paterson 2013 |
|---|---|
| Лицензия | BSD-стиль (см. файл LICENSE) |
| Поддержка | libraries@haskell.org |
| Устойчивость | стабильная |
| Переносимость | переносимая |
| Безопасный Haskell | Безопасный |
| Язык | Haskell2010 |
Описание
Подъёмы классов Prelude Eq, Ord, Read и Show к унарным и бинарным конструкторам типов.
Эти классы необходимы для выражения ограничений на аргументы трансформаторов в переносимом Haskell. Таким образом, для нового трансформатора T, можно написать такие экземпляры
instance (Eq1 f) => Eq1 (T f) where ... instance (Ord1 f) => Ord1 (T f) where ... instance (Read1 f) => Read1 (T f) where ... instance (Show1 f) => Show1 (T f) where ...
Если эти экземпляры могут быть определены, определение экземпляров базовых классов является механическим:
instance (Eq1 f, Eq a) => Eq (T f a) where (==) = eq1 instance (Ord1 f, Ord a) => Ord (T f a) where compare = compare1 instance (Read1 f, Read a) => Read (T f a) where readPrec = readPrec1 readListPrec = readListPrecDefault instance (Show1 f, Show a) => Show (T f a) where showsPrec = showsPrec1
С версии: base-4.9.0.0
Подъёмы классов Prelude
Для унарных конструкторов
class (forall a. Eq a => Eq (f a)) => Eq1 (f :: Type -> Type) where Источник
Подъём класса Eq к унарным конструкторам типов.
Любой экземпляр должен подчиняться следующему закону, обеспечивающему сохранение каноничности:
liftEq (==) = (==)
Этот класс, следовательно, представляет обобщение Eq путём разложения его основного метода на канонический подъём над каноническим внутренним методом, так что подъём можно переиспользовать для других аргументов, отличных от канонического.
С версии: base-4.9.0.0
Минимальное полное определение
Ничего
Методы
liftEq :: (a -> b -> Bool) -> f a -> f b -> Bool Источник
Подъём проверки равенства через конструктор типа.
Функция обычно применяется к функции равенства, но более общий тип гарантирует, что реализация использует её для сравнения элементов первого контейнера с элементами второго.
С версии: base-4.9.0.0
Экземпляры
| Eq1 Complex Источник |
>>> eq1 (1 :+ 2) (1 :+ 2) True >>> eq1 (1 :+ 2) (1 :+ 3) False С версии: base-4.16.0.0 |
| Eq1 NonEmpty Источник | С версии: base-4.10.0.0 |
| Eq1 Identity Источник | С версии: base-4.9.0.0 |
| Eq1 Down Источник | С версии: base-4.12.0.0 |
| Eq1 Par1 Источник | С версии: base-4.21.0.0 |
| Eq1 Maybe Источник | С версии: base-4.9.0.0 |
| Eq1 Solo Источник | С версии: base-4.15 |
| Eq1 [] Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Eq a => Eq1 (Either a) Источник | С версии: base-4.9.0.0 |
| Eq1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
| Eq1 (U1 :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UAddr :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UChar :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UDouble :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UFloat :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UInt :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (UWord :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq1 (V1 :: Type -> Type) Source | Since: base-4.21.0.0 |
| Eq a => Eq1 ((,) a) Source | Since: base-4.9.0.0 |
Defined in Data.Functor.Classes | |
| Eq a => Eq1 (Const a :: Type -> Type) Source | С момента: base-4.9.0.0 |
| (Generic1 f, Eq1 (Rep1 f)) => Eq1 (Generically1 f) Source | С момента: base-4.17.0.0 |
Определено в Data.Functor.Classes МетодыliftEq :: (a -> b -> Bool) -> Generically1 f a -> Generically1 f b -> Bool Source | |
| Eq1 f => Eq1 (Rec1 f) Source | С момента: base-4.21.0.0 |
| (Eq a, Eq b) => Eq1 ((,,) a b) Source | С момента: base-4.16.0.0 |
Определено в Data.Functor.Classes | |
| (Eq1 f, Eq1 g) => Eq1 (Product f g) Source | С момента: base-4.9.0.0 |
| (Eq1 f, Eq1 g) => Eq1 (Sum f g) Source | С момента: base-4.9.0.0 |
| (Eq1 f, Eq1 g) => Eq1 (f :*: g) Source | С момента: base-4.21.0.0 |
| (Eq1 f, Eq1 g) => Eq1 (f :+: g) Source | С момента: base-4.21.0.0 |
| Eq c => Eq1 (K1 i c :: Type -> Type) Source | С момента: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| (Eq a, Eq b, Eq c) => Eq1 ((,,,) a b c) Исходный код | С момента выпуска: base-4.16.0.0 |
Определено в Data.Functor.Classes МетодыliftEq :: (a0 -> b0 -> Bool) -> (a, b, c, a0) -> (a, b, c, b0) -> Bool Исходный код | |
| (Eq1 f, Eq1 g) => Eq1 (Compose f g) Исходный код | С момента выпуска: base-4.9.0.0 |
Определено в Data.Functor.Compose | |
| (Eq1 f, Eq1 g) => Eq1 (f :.: g) Исходный код | С момента выпуска: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Eq1 f => Eq1 (M1 i c f) Исходный код | С момента выпуска: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
eq1 :: (Eq1 f, Eq a) => f a -> f a -> Bool Исходный код
Поднимает стандартную (==) функцию через конструктор типа.
С момента выпуска: base-4.9.0.0
class (Eq1 f, forall a. Ord a => Ord (f a)) => Ord1 (f :: Type -> Type) where Исходный код
Поднятие класса Ord к унитарным конструкторам типов.
Любой экземпляр должен подчиняться следующему закону, гарантирующему сохранение каноничности:
liftCompare compare = compare
Этот класс, следовательно, представляет обобщение Ord путём декомпозиции его основного метода на каноническое поднятие канонического внутреннего метода, что позволяет повторно использовать поднятие для других аргументов, помимо канонического.
С момента выпуска: base-4.9.0.0
Минимальное полное определение
Ничего
Методы
liftCompare :: (a -> b -> Ordering) -> f a -> f b -> Ordering Исходный код
Поднимает compare функцию через конструктор типа.
Функция обычно применяется к функции сравнения, но более общий тип гарантирует, что реализация использует ее для сравнения элементов первого контейнера с элементами второго.
С момента выпуска: base-4.9.0.0
default liftCompare :: forall (f' :: Type -> Type -> Type) c a b. (f ~ f' c, Ord2 f', Ord c) => (a -> b -> Ordering) -> f a -> f b -> Ordering Исходный код
Экземпляры
| Ord1 NonEmpty Источник | С версии: base-4.10.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 Identity Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 Down Источник | С версии: base-4.12.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 Par1 Источник | С версии: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 Maybe Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 Solo Источник | С версии: base-4.15 |
Определено в Data.Functor.Classes | |
| Ord1 [] Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftCompare :: (a -> b -> Ordering) -> [a] -> [b] -> Ordering Источник | |
| Ord a => Ord1 (Either a) Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (Proxy :: Type -> Type) Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (U1 :: Type -> Type) Источник | С версии: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UAddr :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UChar :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UDouble :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UFloat :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UInt :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (UWord :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 (V1 :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord a => Ord1 ((,) a) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftCompare :: (a0 -> b -> Ordering) -> (a, a0) -> (a, b) -> Ordering Source | |
| Ord a => Ord1 (Const a :: Type -> Type) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| (Generic1 f, Ord1 (Rep1 f)) => Ord1 (Generically1 f) Source | Since: base-4.17.0.0 |
Определено в Data.Functor.Classes МетодыliftCompare :: (a -> b -> Ordering) -> Generically1 f a -> Generically1 f b -> Ordering Source | |
| Ord1 f => Ord1 (Rec1 f) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| (Ord a, Ord b) => Ord1 ((,,) a b) Source | Since: base-4.16.0.0 |
Определено в Data.Functor.Classes МетодыliftCompare :: (a0 -> b0 -> Ordering) -> (a, b, a0) -> (a, b, b0) -> Ordering Source | |
| (Ord1 f, Ord1 g) => Ord1 (Product f g) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Product | |
| (Ord1 f, Ord1 g) => Ord1 (Sum f g) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Sum | |
| (Ord1 f, Ord1 g) => Ord1 (f :*: g) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| (Ord1 f, Ord1 g) => Ord1 (f :+: g) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord c => Ord1 (K1 i c :: Type -> Type) Source | Since: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| (Ord a, Ord b, Ord c) => Ord1 ((,,,) a b c) Source | С момента: base-4.16.0.0 |
Определено в Data.Functor.Classes МетодыliftCompare :: (a0 -> b0 -> Порядок) -> (a, b, c, a0) -> (a, b, c, b0) -> Порядок Source | |
| (Ord1 f, Ord1 g) => Ord1 (Compose f g) Source | С момента: base-4.9.0.0 |
Определено в Data.Functor.Compose | |
| (Ord1 f, Ord1 g) => Ord1 (f :.: g) Source | С момента: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
| Ord1 f => Ord1 (M1 i c f) Source | С момента: base-4.21.0.0 |
Определено в Data.Functor.Classes | |
compare1 :: (Ord1 f, Ord a) => f a -> f a -> Порядок Source
Поднять стандартную compare функцию через конструктор типа.
С момента: base-4.9.0.0
class (forall a. Read a => Read (f a)) => Read1 (f :: Тип -> Тип) where Source
Поднятие класса Read к унарным конструкторам типов.
Любой экземпляр должен подчиняться следующим законам, чтобы сохранялась каноничность:
liftReadsPrec readsPrec readList = readsPrec
liftReadList readsPrec readList = readList
liftReadPrec readPrec readListPrec = readPrec
liftReadListPrec readPrec readListPrec = readListPrec
Этот класс, таким образом, представляет обобщение Read путём разбиения его методов на каноническое поднятие на канонический внутренний метод, так что поднятие может быть повторно использовано для других аргументов, кроме канонического.
И liftReadsPrec, и liftReadPrec существуют для соответствия интерфейсу, предоставленному в классе типов Read, но рекомендуется реализовывать экземпляры Read1 с использованием liftReadPrec, а не liftReadsPrec, так как первое более эффективно, чем второе. Например:
instance Read1 T where liftReadPrec = ... liftReadListPrec = liftReadListPrecDefault
Для получения дополнительной информации обратитесь к документации по классу Read.
С момента: base-4.9.0.0
Минимальное полное определение
Методы
liftReadsPrec :: (Целое -> ReadS a) -> ReadS [a] -> Целое -> ReadS (f a) Source
Функция readsPrec для применения конструктора типа на основе функций readsPrec и readList для типа аргумента.
С момента: base-4.9.0.0
liftReadList :: (Целое -> ReadS a) -> ReadS [a] -> ReadS [f a] Source
Функция readList для применения конструктора типа на основе функций readsPrec и readList для типа аргумента. Реализация по умолчанию, использующая стандартный синтаксис списков, верна для большинства типов.
С момента: base-4.9.0.0
liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (f a) Source
Функция readPrec для применения конструктора типа на основе функций readPrec и readListPrec для типа аргумента.
С момента: base-4.10.0.0
liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [f a] Source
Функция readListPrec для применения конструктора типа на основе функций readPrec и readListPrec для типа аргумента.
Определение по умолчанию использует liftReadList. Экземпляры, которые определяют liftReadPrec, также должны определять liftReadListPrec как liftReadListPrecDefault.
С момента: base-4.10.0.0
Примеры
readsPrec1 :: (Read1 f, Read a) => Int -> ReadS (f a) Исходный код
Поднятие стандартных функций readsPrec и readList через конструктор типа.
С момента: base-4.9.0.0
readPrec1 :: (Read1 f, Read a) => ReadPrec (f a) Исходный код
Поднятие стандартных функций readPrec и readListPrec через конструктор типа.
С момента: base-4.10.0.0
liftReadListDefault :: Read1 f => (Int -> ReadS a) -> ReadS [a] -> ReadS [f a] Исходный код
Возможная замена определения метода liftReadList. Это необходимо только для экземпляров Read1, где liftReadListPrec не определен как liftReadListPrecDefault.
С момента: base-4.10.0.0
liftReadListPrecDefault :: Read1 f => ReadPrec a -> ReadPrec [a] -> ReadPrec [f a] Source
Возможная замена определения для метода liftReadListPrec, определённого с использованием liftReadPrec.
Since: base-4.10.0.0
class (forall a. Show a => Show (f a)) => Show1 (f :: Type -> Type) where Source
Поднятие класса Show к унарным конструкторам типов.
Любой экземпляр должен подчиняться следующим законам, чтобы была сохранена каноничность:
liftShowsPrec showsPrec showList = showsPrec
liftShowList showsPrec showList = showList
Этот класс, следовательно, представляет обобщение Show, разлагая его методы на каноническое поднятие канонического внутреннего метода, так что поднятие можно повторно использовать для других аргументов, помимо канонического.
Since: base-4.9.0.0
Минимальное полное определение
Nothing
Методы
liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS Source
Функция showsPrec для применения конструктора типа на основе функций showsPrec и showList для типа аргумента.
Since: base-4.9.0.0
default liftShowsPrec :: forall (f' :: Type -> Type -> Type) b a. (f ~ f' b, Show2 f', Show b) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS Source
liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [f a] -> ShowS Source
Функция showList для применения конструктора типа на основе функций showsPrec и showList для типа аргумента. По умолчанию реализация, использующая стандартную синтаксическую конструкцию списков, правильна для большинства типов.
Since: base-4.9.0.0
Экземпляры
| Show1 Complex Источник |
>>> showsPrec1 0 (2 :+ 3) "" "2 :+ 3" С версии: base-4.16.0.0 |
| Show1 NonEmpty Источник | С версии: base-4.10.0.0 |
| Show1 Identity Источник | С версии: base-4.9.0.0 |
| Show1 Down Источник | С версии: base-4.12.0.0 |
| Show1 Par1 Источник | С версии: base-4.21.0.0 |
| Show1 Maybe Источник | С версии: base-4.9.0.0 |
| Show1 Solo Источник | С версии: base-4.15 |
| Show1 [] Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Show a => Show1 (Either a) Source | Since: base-4.9.0.0 |
| Show1 (Proxy :: Type -> Type) Source | Since: base-4.9.0.0 |
| Show1 (U1 :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UAddr :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UChar :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UDouble :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UFloat :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UInt :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (UWord :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show1 (V1 :: Type -> Type) Source | Since: base-4.21.0.0 |
| Show a => Show1 ((,) a) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Show a => Show1 (Const a :: Type -> Type) Source | Since: base-4.9.0.0 |
| Show1 f => Show1 (Rec1 f) Source | Since: base-4.21.0.0 |
| (Show a, Show b) => Show1 ((,,) a b) Source | Since: base-4.16.0.0 |
Определено в Data.Functor.Classes | |
| (Show1 f, Show1 g) => Show1 (Product f g) Source | Since: base-4.9.0.0 |
| (Show1 f, Show1 g) => Show1 (Sum f g) Source | Since: base-4.9.0.0 |
| (Show1 f, Show1 g) => Show1 (f :*: g) Source | Since: base-4.21.0.0 |
| (Show1 f, Show1 g) => Show1 (f :+: g) Source | Since: base-4.21.0.0 |
| Show c => Show1 (K1 i c :: Type -> Type) Source | Since: base-4.21.0.0 |
| (Show a, Show b, Show c) => Show1 ((,,,) a b c) Source | Since: base-4.16.0.0 |
Определено в Data.Functor.Classes | |
| (Show1 f, Show1 g) => Show1 (Compose f g) Source | Since: base-4.9.0.0 |
| (Show1 f, Show1 g) => Show1 (f :.: g) Source | Since: base-4.21.0.0 |
showsPrec1 :: (Show1 f, Show a) => Int -> f a -> ShowS Source
Поднять стандартные showsPrec и showList функции через конструктор типа.
Since: base-4.9.0.0
Для бинарных конструкторов
class (forall a. Eq a => Eq1 (f a)) => Eq2 (f :: Type -> Type -> Type) where Source
Поднятие класса Eq к бинарным конструкторам типов.
Since: base-4.9.0.0
Методы
liftEq2 :: (a -> b -> Bool) -> (c -> d -> Bool) -> f a c -> f b d -> Bool Source
Поднять тесты на равенство через конструктор типа.
Функция обычно применяется к функциям равенства, но более общий тип гарантирует, что реализация использует их для сравнения элементов первого контейнера с элементами второго.
Since: base-4.9.0.0
Экземпляры
| Eq2 Either Source | Since: base-4.9.0.0 |
| Eq2 (,) Source | Since: base-4.9.0.0 |
| Eq2 (Const :: Type -> Type -> Type) Source | Since: base-4.9.0.0 |
| Eq a => Eq2 ((,,) a) Source |
>>> eq2 ('x', True, "str") ('x', True, "str")
True
Since: base-4.16.0.0 |
| (Eq a, Eq b) => Eq2 ((,,,) a b) Source |
>>> eq2 ('x', True, "str", 2) ('x', True, "str", 2 :: Int)
True
Since: base-4.16.0.0 |
eq2 :: (Eq2 f, Eq a, Eq b) => f a b -> f a b -> Bool Source
Поднять стандартную (==) функцию через конструктор типа.
Since: base-4.9.0.0
class (Eq2 f, forall a. Ord a => Ord1 (f a)) => Ord2 (f :: Type -> Type -> Type) where Source
Поднятие класса Ord к бинарным конструкторам типов.
Since: base-4.9.0.0
Краткое описание методов
liftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> f a c -> f b d -> Ordering Source
Поднять функции compare через конструктор типа.
Функция обычно применяется к функциям сравнения, но более общий тип гарантирует, что реализация использует их для сравнения элементов первого контейнера с элементами второго.
Since: base-4.9.0.0
Экземпляры
| Ord2 Either Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord2 (,) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes Краткое описание методовliftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> (a, c) -> (b, d) -> Ordering Source | |
| Ord2 (Const :: Type -> Type -> Type) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Ord a => Ord2 ((,,) a) Source |
>>> compare2 ('x', True, "aaa") ('x', True, "zzz")
LT
Since: base-4.16.0.0 |
Определено в Data.Functor.Classes Краткое описание методовliftCompare2 :: (a0 -> b -> Ordering) -> (c -> d -> Ordering) -> (a, a0, c) -> (a, b, d) -> Ordering Source | |
| (Ord a, Ord b) => Ord2 ((,,,) a b) Source |
>>> compare2 ('x', True, "str", 2) ('x', True, "str", 3 :: Int)
LT
Since: base-4.16.0.0 |
Определено в Data.Functor.Classes Краткое описание методовliftCompare2 :: (a0 -> b0 -> Ordering) -> (c -> d -> Ordering) -> (a, b, a0, c) -> (a, b, b0, d) -> Ordering Source | |
compare2 :: (Ord2 f, Ord a, Ord b) => f a b -> f a b -> Ordering Source
Поднять стандартную функцию compare через конструктор типа.
Since: base-4.9.0.0
class (forall a. Read a => Read1 (f a)) => Read2 (f :: Type -> Type -> Type) where Source
Поднятие класса Read к бинарным конструкторам типов.
И liftReadsPrec2 и liftReadPrec2 существуют, чтобы соответствовать интерфейсу, предоставляемому в классе типов Read, но рекомендуется реализовывать экземпляры Read2 с помощью liftReadPrec2, а не liftReadsPrec2, поскольку первый более эффективен, чем второй. Например:
instance Read2 T where liftReadPrec2 = ... liftReadListPrec2 = liftReadListPrec2Default
Для получения дополнительной информации обратитесь к документации по классу Read.
Since: base-4.9.0.0
Минимальное полное определение
Методы
liftReadsPrec2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> Int -> ReadS (f a b) Источник
readsPrec функция для применения конструктора типа, основанного на readsPrec и readList функциях для типов аргументов.
С момента: base-4.9.0.0
liftReadList2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> ReadS [f a b] Источник
readList функция для применения конструктора типа, основанного на readsPrec и readList функциях для типов аргументов. Реализация по умолчанию, использующая стандартную синтаксическую конструкцию списков, является корректной для большинства типов.
С момента: base-4.9.0.0
liftReadPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (f a b) Источник
readPrec функция для применения конструктора типа, основанного на readPrec и readListPrec функциях для типов аргументов.
С момента: base-4.10.0.0
liftReadListPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [f a b] Источник
readListPrec функция для применения конструктора типа, основанного на readPrec и readListPrec функциях для типов аргументов.
Определение по умолчанию использует liftReadList2. Примеры, определяющие liftReadPrec2, должны также определять liftReadListPrec2 как liftReadListPrec2Default.
С момента: base-4.10.0.0
Примеры
| Read a => Read2 ((,,) a) Source |
>>> readPrec_to_S readPrec2 0 "('x', True, 2)" :: [((Char, Bool, Int), String)]
[(('x',True,2),"")]
С момента: base-4.16.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec2 :: (Целое -> ReadS a0) -> ReadS [a0] -> (Целое -> ReadS b) -> ReadS [b] -> Целое -> ReadS (a, a0, b) Source liftReadList2 :: (Целое -> ReadS a0) -> ReadS [a0] -> (Целое -> ReadS b) -> ReadS [b] -> ReadS [(a, a0, b)] Source liftReadPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (a, a0, b) Source liftReadListPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [(a, a0, b)] Source | |
| (Read a, Read b) => Read2 ((,,,) a b) Source |
>>> readPrec_to_S readPrec2 0 "('x', True, 2, 4.5)" :: [((Char, Bool, Int, Double), String)]
[(('x',True,2,4.5),"")]
С момента: base-4.16.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec2 :: (Целое -> ReadS a0) -> ReadS [a0] -> (Целое -> ReadS b0) -> ReadS [b0] -> Целое -> ReadS (a, b, a0, b0) Source liftReadList2 :: (Целое -> ReadS a0) -> ReadS [a0] -> (Целое -> ReadS b0) -> ReadS [b0] -> ReadS [(a, b, a0, b0)] Source liftReadPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b0 -> ReadPrec [b0] -> ReadPrec (a, b, a0, b0) Source liftReadListPrec2 :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec b0 -> ReadPrec [b0] -> ReadPrec [(a, b, a0, b0)] Source | |
readsPrec2 :: (Read2 f, Read a, Read b) => Целое -> ReadS (f a b) Source
Поднять стандартную readsPrec функцию через конструктор типа.
С момента: base-4.9.0.0
readPrec2 :: (Read2 f, Read a, Read b) => ReadPrec (f a b) Source
Поднять стандартную readPrec функцию через конструктор типа.
С момента: base-4.10.0.0
liftReadList2Default :: Read2 f => (Целое -> ReadS a) -> ReadS [a] -> (Целое -> ReadS b) -> ReadS [b] -> ReadS [f a b] Source
Возможная замена определения для liftReadList2 метода. Это необходимо только для Read2 экземпляров, где liftReadListPrec2 не определено как liftReadListPrec2Default.
С момента: base-4.10.0.0
liftReadListPrec2Default :: Read2 f => ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [f a b] Source
Возможная замена определения для liftReadListPrec2 метода, определенного с помощью liftReadPrec2.
С момента: base-4.10.0.0
class (forall a. Show a => Show1 (f a)) => Show2 (f :: Type -> Type -> Type) where Source
Поднятие класса Show к бинарным конструкторам типов.
С момента: base-4.9.0.0
Минимальное полное определение
Методы
liftShowsPrec2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> Int -> f a b -> ShowS Source
Функция для применения конструктора типа, основанная на функциях showsPrec и showList для типов аргументов.
С момента: base-4.9.0.0
liftShowList2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> [f a b] -> ShowS Source
Функция для применения конструктора типа, основанная на функциях showsPrec и showList для типов аргументов. Реализация по умолчанию, использующая стандартную синтаксическую конструкцию списка, верна для большинства типов.
С момента: base-4.9.0.0
Экземпляры
| Show2 Either Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Show2 (,) Источник | С версии: base-4.9.0.0 |
| Show2 (Const :: Type -> Type -> Type) Источник | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Show a => Show2 ((,,) a) Источник |
>>> showsPrec2 0 ('x', True, 2 :: Int) ""
"('x',True,2)"
С версии: base-4.16.0.0 |
Определено в Data.Functor.Classes | |
| (Show a, Show b) => Show2 ((,,,) a b) Источник |
>>> showsPrec2 0 ('x', True, 2 :: Int, 4.5 :: Double) ""
"('x',True,2,4.5)"
С версии: base-4.16.0.0 |
Определено в Data.Functor.Classes | |
showsPrec2 :: (Show2 f, Show a, Show b) => Int -> f a b -> ShowS Source
Поднять стандартную функцию showsPrec через конструктор типа.
Since: base-4.9.0.0
Вспомогательные функции
Эти функции могут быть использованы для сборки Read и Show экземпляров для новых алгебраических типов. Например, учитывая определение
data T f a = Zero a | One (f a) | Two a (f a)
стандартный экземпляр Read1 может быть определен как
instance (Read1 f) => Read1 (T f) where
liftReadPrec rp rl = readData $
readUnaryWith rp "Zero" Zero <|>
readUnaryWith (liftReadPrec rp rl) "One" One <|>
readBinaryWith rp (liftReadPrec rp rl) "Two" Two
liftReadListPrec = liftReadListPrecDefault
и соответствующий экземпляр Show1 как
instance (Show1 f) => Show1 (T f) where
liftShowsPrec sp _ d (Zero x) =
showsUnaryWith sp "Zero" d x
liftShowsPrec sp sl d (One x) =
showsUnaryWith (liftShowsPrec sp sl) "One" d x
liftShowsPrec sp sl d (Two x y) =
showsBinaryWith sp (liftShowsPrec sp sl) "Two" d x y
readsData :: (String -> ReadS a) -> Int -> ReadS a Source
readsData p d является парсером для типов данных, где каждая альтернатива начинается с конструктора данных. Он разбирает конструктор и передает его p. Парсеры для различных конструкторов могут быть построены с помощью readsUnary, readsUnary1 и readsBinary1, и объединены с mappend из класса Monoid.
Since: base-4.9.0.0
readData :: ReadPrec a -> ReadPrec a Source
readData p является парсером для типов данных, где каждая альтернатива начинается с конструктора данных. Он разбирает конструктор и передает его p. Парсеры для различных конструкторов могут быть построены с помощью readUnaryWith и readBinaryWith, и объединены с (<|>) из класса Alternative.
Since: base-4.10.0.0
readsUnaryWith :: (Int -> ReadS a) -> String -> (a -> t) -> String -> ReadS t Source
readsUnaryWith rp n c n' соответствует имени унарного конструктора данных, а затем разбирает его аргумент с помощью rp.
Since: base-4.9.0.0
readUnaryWith :: ReadPrec a -> String -> (a -> t) -> ReadPrec t Source
readUnaryWith rp n c' соответствует имени унарного конструктора данных, а затем разбирает его аргумент с помощью rp.
Since: base-4.10.0.0
readsBinaryWith :: (Int -> ReadS a) -> (Int -> ReadS b) -> String -> (a -> b -> t) -> String -> ReadS t Source
readsBinaryWith rp1 rp2 n c n' соответствует имени бинарного конструктора данных, а затем разбирает его аргументы с помощью rp1 и rp2 соответственно.
Since: base-4.9.0.0
readBinaryWith :: ReadPrec a -> ReadPrec b -> String -> (a -> b -> t) -> ReadPrec t Source
readBinaryWith rp1 rp2 n c' соответствует имени бинарного конструктора данных, а затем разбирает его аргументы с помощью rp1 и rp2 соответственно.
Since: base-4.10.0.0
showsUnaryWith :: (Int -> a -> ShowS) -> String -> Int -> a -> ShowS Source
showsUnaryWith sp n d x создает строковое представление унарного конструктора данных с именем n и аргументом x, в контексте приоритета d.
Since: base-4.9.0.0
showsBinaryWith :: (Int -> a -> ShowS) -> (Int -> b -> ShowS) -> String -> Int -> a -> b -> ShowS Source
showsBinaryWith sp1 sp2 n d x y создает строковое представление бинарного конструктора данных с именем n и аргументами x и y, в контексте приоритета d.
Since: base-4.9.0.0
Устаревшие вспомогательные функции
readsUnary :: Read a => String -> (a -> t) -> String -> ReadS t Source
Deprecated: Use readsUnaryWith to define liftReadsPrec
readsUnary n c n' соответствует имени унарного конструктора данных, а затем разбирает его аргумент с помощью readsPrec.
Since: base-4.9.0.0
readsUnary1 :: (Read1 f, Read a) => String -> (f a -> t) -> String -> ReadS t Source
Deprecated: Use readsUnaryWith to define liftReadsPrec
readsUnary1 n c n' соответствует имени унарного конструктора данных, а затем разбирает его аргумент с помощью readsPrec1.
Since: base-4.9.0.0
readsBinary1 :: (Read1 f, Read1 g, Read a) => String -> (f a -> g a -> t) -> String -> ReadS t Source
Deprecated: Use readsBinaryWith to define liftReadsPrec
readsBinary1 n c n' соответствует имени бинарного конструктора данных, а затем разбирает его аргументы с помощью readsPrec1.
Since: base-4.9.0.0
showsUnary :: Show a => String -> Int -> a -> ShowS Source
Deprecated: Use showsUnaryWith to define liftShowsPrec
showsUnary n d x создает строковое представление унарного конструктора данных с именем n и аргументом x, в контексте приоритета d.
Since: base-4.9.0.0
showsUnary1 :: (Show1 f, Show a) => Строка -> Целое -> f a -> ShowS Исходный код
Устаревшее: Используйте showsUnaryWith для определения liftShowsPrec
showsUnary1 n d x генерирует строковое представление унарного конструктора данных с именем n и аргументом x, в контексте приоритета d.
С версии: base-4.9.0.0
showsBinary1 :: (Show1 f, Show1 g, Show a) => Строка -> Целое -> f a -> g a -> ShowS Исходный код
Устаревшее: Используйте showsBinaryWith для определения liftShowsPrec
showsBinary1 n d x y генерирует строковое представление бинарного конструктора данных с именем n и аргументами x и y, в контексте приоритета d.
С версии: base-4.9.0.0
© 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-Functor-Classes.html