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