GHC.Generics
| Авторские права | (c) Университет Утрехта 2010-2011 Оксфордский университет 2012-2014 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддержка | libraries@haskell.org |
| Устойчивость | внутренняя |
| Переносимость | непереносимая |
| Безопасный Haskell | Надёжный |
| Язык | Haskell2010 |
Описание
Если вы используете GHC.Generics, вам следует рассмотреть использование пакета http://hackage.haskell.org/package/generic-deriving, который содержит много полезных общетиповых функций.
С версии: base-4.6.0.0
Введение
Функции с типом данных основаны на идее преобразования значений типа данных T в соответствующие значения (почти) изоморфного типа Rep T. Тип Rep T построен из ограниченного набора конструкторов типов, все они предоставлены в этом модуле. Затем функция с типом данных — это перегруженная функция с реализациями для большинства этих конструкторов типов, а также обёрткой, которая выполняет отображение между T и Rep T. Используя эту технику, нам нужно всего несколько общетиповых реализаций, чтобы реализовать функциональность, которая работает для любого представимого типа.
Представимые типы собираются в классе Generic, который определяет связанный тип Rep, а также функции преобразования from и to. Как правило, вы не будете определять реализации Generic вручную, а позволите компилятору сгенерировать их.
Представление типов данных
Ключ к определению собственных функций с типом данных заключается в понимании того, как представлять типы данных с использованием данного набора конструкторов типов.
Давайте сначала рассмотрим пример:
data Tree a = Leaf a | Node (Tree a) (Tree a) deriving Generic
Вышеупомянутое объявление (которое требует псевдонима языка DeriveGeneric) приводит к генерации следующего представления:
instance Generic (Tree a) where type Rep (Tree a) = D1 ('MetaData "Tree" "Main" "package-name" 'False) (C1 ('MetaCons "Leaf" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Node" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Tree a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Tree a)))) ...
Подсказка: Вы можете получить информацию о генерируемом коде из GHC, передав флаг -ddump-deriv. В GHCi вы можете раскрыть семейство типов, например, Rep с помощью команды :kind!.
Это много информации! Однако большая часть её фактически просто метаинформация, которая делает имена типов данных и конструкторов, и больше доступными на уровне типов.
Вот упрощённое представление для Tree с почти всей метаинформацией удалённой, сейчас сохраняя только самые существенные аспекты:
instance Generic (Tree a) where type Rep (Tree a) = Rec0 a :+: (Rec0 (Tree a) :*: Rec0 (Tree a))
Тип Tree имеет два конструктора. Представление отдельных конструкторов объединяется с помощью двоичного конструктора типов :+:.
Первый конструктор состоит из одного поля, которое является параметром a. Это представлено как Rec0 a.
Второй конструктор состоит из двух полей. Каждое из них — рекурсивное поле типа Tree a, представленное как Rec0 (Tree a). Представления отдельных полей объединяются с помощью двоичного конструктора типов :*:.
Теперь давайте объясним дополнительные метки, используемые в полном представлении:
- Метка
S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy)указывает на несколько вещей. Метка'Nothingуказывает, что нет селектора поля записи, связанного с этим полем конструктора (если бы он был, он был бы помечен как'Just "recordName"). Другие типы содержат метаинформацию о строгости поля: - Нет аннотации
{-# UNPACK #-}или{-# NOUNPACK #-}, поэтому она помечена как'NoSourceUnpackedness. - Нет аннотаций строгости (
!) или лени (~) в исходном коде, поэтому она помечена как'NoSourceStrictness. - Компилятор выводит, что поле ленивое, поэтому оно помечено как
'DecidedLazy. Имейте в виду, что принятое компилятором решение может сильно отличаться от того, что написано в источнике. См.DecidedStrictnessдля более подробного объяснения.
Тип 'MetaSel также является экземпляром класса типов Selector, который может быть использован для получения информации о поле на уровне значений.
- Вызовы
C1 ('MetaCons "Leaf" 'PrefixI 'False)иC1 ('MetaCons "Node" 'PrefixI 'False)указывают, что заключённая часть — представление первого и второго конструктора типа данныхTreeсоответственно. Здесь метаинформация о именах конструкторов, фиксированности и наличии именованных полей или нет кодируется на уровне типов. Тип'MetaConsтакже является экземпляром класса типовConstructor. Этот класс типов может использоваться для получения информации о конструкторе на уровне значений. - Метка
D1 ('MetaData "Tree" "Main" "package-name" 'False)указывает, что заключённая часть — представление типа данныхTree. Опять же, метаинформация кодируется на уровне типов. Тип'MetaDataявляется экземпляром классаDatatype, который может быть использован для получения имени типа данных, модуля, в котором он определён, пакета, в котором он находится, и того, был ли он определён с помощьюdataилиnewtypeна уровне значений.
Производные и фундаментальные типы представления
Существует много функций с типом данных, которые не различают позиции, которые являются параметрами или позициями, которые являются рекурсивными вызовами. Также существует много функций с типом данных, которые вообще не заботятся о именах типов данных и конструкторов. Чтобы свести к минимуму количество случаев, которые нужно учитывать в функциях с типом данных в такой ситуации, оказывается, что многие из конструкторов типов, представленных выше, фактически являются синонимами, определяющими их как варианты меньшего набора конструкторов.
Отдельные поля конструкторов: K1
Конструктор типов Rec0 является вариантом K1.
type Rec0 = K1 R
Здесь R — это тип-прокси, не имеющий связанных значений.
Раньше существовал другой вариант K1 (а именно Par0), но он был устаревшим.
Метаинформация: M1
Конструкторы типов S1, C1 и D1 — все варианты M1.
type S1 = M1 S type C1 = M1 C type D1 = M1 D
Типы S, C и D снова являются типами-прокси, используемыми только для создания нескольких вариантов M1.
Дополнительные конструкторы типов общего представления
Помимо K1, M1, :+: и :*: есть ещё несколько конструкторов типов, встречающихся в представлениях других типов данных.
Пустые типы данных: V1
Для пустых типов данных используется представление V1. Например,
data Empty deriving Generic
приводит к
instance Generic Empty where type Rep Empty = D1 ('MetaData "Empty" "Main" "package-name" 'False) V1
Конструкторы без полей: U1
Если конструктор не имеет аргументов, то используется U1 как его представление. Например, представление Bool такое:
instance Generic Bool where type Rep Bool = D1 ('MetaData "Bool" "Data.Bool" "package-name" 'False) (C1 ('MetaCons "False" 'PrefixI 'False) U1 :+: C1 ('MetaCons "True" 'PrefixI 'False) U1)
Представление типов с множеством конструкторов или полей
Поскольку :+: и :*: являются просто двоичными операторами, можно спросить, что произойдёт, если тип данных имеет более двух конструкторов или конструктор с более чем двумя полями. Ответ прост: операторы используются несколько раз, чтобы объединить все конструкторы и поля по мере необходимости. Однако пользователи /не должны полагаться на определённую стратегию вложенности/ для :+: и :*:. Компилятор свободен выбирать любое вложение по своему усмотрению. (На практике текущая реализация пытается создать более-менее сбалансированное вложение, так что обход структуры типа данных от корня до определённого компонента может выполняться за логарифмическое, а не линейное время.)
Определение функций с типом данных
Функция с типом данных состоит из двух частей:
- Общетиповые реализации для функции, реализующей её для большинства конструкторов типов представления, представленных выше.
- Оборачивание, которое для любого типа данных, который находится в
Generic, выполняет преобразование между исходным значением и его представлением на основеRep, а затем вызывает общетиповые реализации.
В качестве примера рассмотрим функцию encode, которая производит простое, но без потерь битовое кодирование значений различных типов данных. Поэтому мы хотим определить функцию
encode :: Generic a => a -> [Bool]
где мы используем Bool в качестве нашего типа данных для битов.
Для первой части мы определяем класс Encode'. Возможно, неожиданно, этот класс параметризован конструктором типа f вида * -> *. Это технический момент: все конструкторы типов представления работают с видом * -> * в качестве базового вида. Но аргумент типа никогда не используется. Это может быть изменено в будущем.
Класс имеет один метод, и мы используем тип, который мы хотим для нашей конечной функции, но мы заменяем вхождения универсального аргумента типа a на f p (где p — любой аргумент; он не будет использоваться).
class Encode' f where encode' :: f p -> [Bool]
С целью сделать encode работающим с Tree и другими типами данных, мы теперь определяем экземпляры для конструкторов типов представления V1, U1, :+:, :*:, K1 и M1.
Определение универсальных типов представления
Для этого нам необходимо знать фактические определения этих типов:
data V1 p -- lifted version of Empty data U1 p = U1 -- lifted version of () data (:+:) f g p = L1 (f p) | R1 (g p) -- lifted version of Either data (:*:) f g p = (f p) :*: (g p) -- lifted version of (,) newtype K1 i c p = K1 { unK1 :: c } -- a container for a c newtype M1 i t f p = M1 { unM1 :: f p } -- a wrapper
Таким образом, U1 — это просто тип единицы, :+: — это просто двоичный выбор, подобный Either, :*: — двоичная пара, подобная конструктору пары (,), K1 — значение определенного типа c, а M1 оборачивает значение универсального аргумента типа, которое в поднятом мире является f p (где нас не интересует p).
Универсальные экземпляры
Экземпляр для V1 немного неуклюж (но и редко используется):
instance Encode' V1 where encode' x = undefined
Нет значений типа V1 p для передачи (кроме неопределенных), поэтому это на самом деле невозможно. Можно спросить, зачем вообще определять экземпляр для V1 в этом случае? Ну, пустой тип может использоваться как аргумент непустого типа, и вы всё ещё можете закодировать полученный тип. В качестве несколько искусственного примера рассмотрите [Empty], который не является пустым типом, но содержит только пустой список. Экземпляр V1 гарантирует, что мы можем вызвать универсальную функцию для таких типов.
Существует ровно одно значение типа U1, поэтому кодирование его не требует никаких знаний, и мы можем использовать ноль бит:
instance Encode' U1 where encode' U1 = []
В случае :+: мы получаем False или True в зависимости от того, где находится конструктор предоставленного значения — слева или справа:
instance (Encode' f, Encode' g) => Encode' (f :+: g) where encode' (L1 x) = False : encode' x encode' (R1 x) = True : encode' x
(Обратите внимание, что эта стратегия кодирования может быть ненадежной в разных версиях GHC. Вспомните, что компилятор свободен выбрать любое вложение :+:, которое он выберет, поэтому, если GHC выбирает (a :+: b) :+: c, то кодирование для a будет [False, False], b будет [False, True], а c будет [True]. Однако, если GHC выбирает a :+: (b :+: c), то кодирование для a будет [False], b будет [True, False], и c будет [True, True].)
В случае :*: мы добавляем кодирования двух подкомпонентов:
instance (Encode' f, Encode' g) => Encode' (f :*: g) where encode' (x :*: y) = encode' x ++ encode' y
Случай для K1 довольно интересен. Здесь мы рекурсивно вызываем конечную функцию encode, которую ещё предстоит определить. Для этой функции мы будем использовать другой класс типов Encode.
instance (Encode c) => Encode' (K1 i c) where encode' (K1 x) = encode x
Обратите внимание, как мы можем определить унифицированный экземпляр для M1, потому что мы полностью игнорируем всю мета-информацию:
instance (Encode' f) => Encode' (M1 i t f) where encode' (M1 x) = encode' x
В отличие от K1, экземпляр для M1 ссылается на encode', а не на encode.
Оборачивание и универсальный по умолчанию
Теперь мы определяем класс Encode для фактической функции encode:
class Encode a where encode :: a -> [Bool] default encode :: (Generic a, Encode' (Rep a)) => a -> [Bool] encode x = encode' (from x)
Входящий x преобразуется с помощью from, затем мы передаём его универсальным экземплярам с помощью encode'. Мы используем это как определение по умолчанию для encode. Нам нужна сигнатура default encode, потому что обычные методы по умолчанию Haskell не должны вводить дополнительные ограничения класса, но наш универсальный по умолчанию — это делает.
Определение конкретного экземпляра теперь такое же простое, как и:
instance (Encode a) => Encode (Tree a)
Исключение универсальных экземпляров
Не всегда требуется предоставлять экземпляры для всех универсальных типов представления, но их отсутствие ограничивает набор типов данных, для которых будут работать функции:
- Если экземпляр
:+:не задан, функция всё ещё может работать для пустых типов данных или типов данных с одним конструктором, но потерпит неудачу для типов данных с более чем одним конструктором. - Если экземпляр
:*:не задан, функция всё ещё может работать для типов данных, где каждый конструктор имеет только ноль или одно поле, в частности, для типов перечисления. - Если экземпляр
K1не задан, функция всё ещё может работать для типов перечисления, где ни один конструктор не имеет полей. - Если экземпляр
V1не задан, функция всё ещё может работать для любого непустого типа данных. - Если экземпляр
U1не задан, функция всё ещё может работать для любого типа данных, где каждый конструктор имеет по крайней мере одно поле.
Экземпляр M1 всегда требуется (но он может просто игнорировать мета-информацию, как это происходит в encode выше).
Универсальные классы конструкторов
Определяемые выше функции, работающие с типами данных, охватывают большой класс типов данных, включая параметризованные типы данных. (Мы использовали Tree в качестве нашего примера выше, который является вида * -> *). Однако класс Generic охватывает типы вида *, и поэтому результирующие универсальные функции (такие как encode) должны быть параметризованы универсальным аргументом типа вида *.
Что если мы хотим определить универсальные классы, которые охватывают конструкторы типов (такие как Functor, Traversable или Foldable)?
Класс Generic1
Как и Generic, существует класс Generic1, который определяет представление Rep1 и функции преобразования from1 и to1, только что Generic1 охватывает типы вида * -> *.
(Более общо, он может охватывать типы вида k -> *, для любого вида k, если включено расширение PolyKinds. Подробнее об этом позже.) Класс Generic1 также выводим.
Представление Rep1 немного отличается от Rep. Давайте рассмотрим Tree как пример:
data Tree a = Leaf a | Node (Tree a) (Tree a) deriving Generic1
Вышеприведенное объявление приводит к генерации следующего представления:
instance Generic1 Tree where type Rep1 Tree = D1 ('MetaData "Tree" "Main" "package-name" 'False) (C1 ('MetaCons "Leaf" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "Node" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Tree) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Tree))) ...
Представление повторно использует D1, C1, S1 (и тем самым M1). А также :+: и :*: из Rep. (Эта возможность повторного использования является причиной того, что мы носим с собой фиктивный аргумент типа для типов вида *, но уже достаточно разных имён, чтобы не дублировать каждое из них.)
Разница заключается в том, что теперь мы используем Par1 для ссылки на параметр (а этот параметр, который раньше был a ), нигде явно не упоминается; и мы используем Rec1 для ссылки на рекурсивное использование Tree a.
Представление типов * -> *
В отличие от Rec0, конструкторы типов Par1 и Rec1 не отображаются в K1. Они определяются непосредственно, как следует:
newtype Par1 p = Par1 { unPar1 :: p } -- gives access to parameter p newtype Rec1 f p = Rec1 { unRec1 :: f p } -- a wrapper
В Par1, параметр p используется впервые, а Rec1 просто оборачивает применение f к p.
Обратите внимание, что K1 (в образе Rec0 ) всё ещё может встречаться в представлении Rep1, а именно, когда поле типа данных не упоминает параметр.
Объявление
data WithInt a = WithInt Int a deriving Generic1
приводит к
instance Generic1 WithInt where type Rep1 WithInt = D1 ('MetaData "WithInt" "Main" "package-name" 'False) (C1 ('MetaCons "WithInt" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
Если параметр a появляется под композицией других конструкторов типов, то представление также включает композицию:
data Rose a = Fork a [Rose a]
приводит к
instance Generic1 Rose where type Rep1 Rose = D1 ('MetaData "Rose" "Main" "package-name" 'False) (C1 ('MetaCons "Fork" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1 :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 Rose)))
где
newtype (:.:) f g p = Comp1 { unComp1 :: f (g p) }
Представление типов k -> *
Класс Generic1 может быть обобщён, чтобы охватывать типы вида k -> *, для любого вида k. Для этого выведите экземпляр Generic1 с включённым расширением PolyKinds.
Например, объявление
data Proxy (a :: k) = Proxy deriving Generic1
приводит к слегка отличному экземпляру в зависимости от того, включен ли PolyKinds. Если компилируется без PolyKinds, то Rep1 Proxy :: * -> *, но если компилируется с PolyKinds, то Rep1 Proxy :: k -> *.
Представление неулучшенных типов
Если попытаться вывести экземпляр Generic для типа данных с неулучшенным аргументом (например, Int# ), можно ожидать появления аргумента Int# с отметкой Rec0 Int# . Однако это не сработает, так как Int# имеет неулучшенный вид, а Rec0 ожидает тип вида *.
Одним из решений было бы представить вхождение Int# как 'Rec0 Int'. Однако при этом программист не сможет узнать, является ли Int на самом деле Int# в маскировке.
Вместо повторного использования Rec0, используется отдельная семейство данных URec для обозначения вхождений распространённых неулучшенных типов:
data family URec a p data instance URec (Ptr ()) p = UAddr { uAddr# :: Addr# } data instance URec Char p = UChar { uChar# :: Char# } data instance URec Double p = UDouble { uDouble# :: Double# } data instance URec Int p = UFloat { uFloat# :: Float# } data instance URec Float p = UInt { uInt# :: Int# } data instance URec Word p = UWord { uWord# :: Word# }
Для удобства предоставляются несколько синонимов типов:
type UAddr = URec (Ptr ()) type UChar = URec Char type UDouble = URec Double type UFloat = URec Float type UInt = URec Int type UWord = URec Word
Объявление
data IntHash = IntHash Int# deriving Generic
приводит к
instance Generic IntHash where type Rep IntHash = D1 ('MetaData "IntHash" "Main" "package-name" 'False) (C1 ('MetaCons "IntHash" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) UInt))
В настоящее время генерируются только шесть перечисленных выше неулучшенных типов, но в будущем это может быть расширено, чтобы охватить больше неулучшенных типов.
Общие типы представления
Пустота: используется для типов данных без конструкторов
Экземпляры
| Generic1 (V1 :: k -> Type) | С версии: base-4.9.0.0 |
| Functor (V1 :: Type -> Type) | С версии: base-4.9.0.0 |
| Foldable (V1 :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => V1 m -> m Источник foldMap :: Monoid m => (a -> m) -> V1 a -> m Источник foldMap' :: Monoid m => (a -> m) -> V1 a -> m Источник foldr :: (a -> b -> b) -> b -> V1 a -> b Источник foldr' :: (a -> b -> b) -> b -> V1 a -> b Источник foldl :: (b -> a -> b) -> b -> V1 a -> b Источник foldl' :: (b -> a -> b) -> b -> V1 a -> b Источник foldr1 :: (a -> a -> a) -> V1 a -> a Источник foldl1 :: (a -> a -> a) -> V1 a -> a Источник toList :: V1 a -> [a] Источник length :: V1 a -> Int Источник elem :: Eq a => a -> V1 a -> Bool Источник maximum :: Ord a => V1 a -> a Источник minimum :: Ord a => V1 a -> a Источник | |
| Traversable (V1 :: Type -> Type) | С версии: base-4.9.0.0 |
| Contravariant (V1 :: Type -> Type) | |
| Eq (V1 p) | Since: base-4.9.0.0 |
| Data p => Data (V1 p) | Since: base-4.9.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> V1 p -> c (V1 p) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (V1 p) Source toConstr :: V1 p -> Constr Source dataTypeOf :: V1 p -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (V1 p)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (V1 p)) Source gmapT :: (forall b. Data b => b -> b) -> V1 p -> V1 p Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> V1 p -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> V1 p -> r Source gmapQ :: (forall d. Data d => d -> u) -> V1 p -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> V1 p -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> V1 p -> m (V1 p) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> V1 p -> m (V1 p) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> V1 p -> m (V1 p) Source | |
| Ord (V1 p) | Since: base-4.9.0.0 |
Определено в GHC.Generics | |
| Read (V1 p) | Since: base-4.9.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Целое -> ReadS (V1 p) Исходный код readList :: ReadS [V1 p] Исходный код readPrec :: ReadPrec (V1 p) Исходный код readListPrec :: ReadPrec [V1 p] Исходный код | |
| Show (V1 p) | Since: base-4.9.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Целое -> V1 p -> ShowS Исходный код show :: V1 p -> Строка Исходный код showList :: [V1 p] -> ShowS Исходный код | |
| Generic (V1 p) | Since: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (V1 p) :: Тип -> Тип Исходный код | |
| Полугруппа (V1 p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Методы(<>) :: V1 p -> V1 p -> V1 p Исходный код sconcat :: Непустой список (V1 p) -> V1 p Исходный код stimes :: Целочисленный b => b -> V1 p -> V1 p Исходный код | |
| type Rep1 (V1 :: k -> Тип) | |
| type Rep (V1 p) | |
data U1 (p :: k) Исходный код
Единица: используется для конструкторов без аргументов
Конструкторы
| U1 |
Примеры
| Generic1 (U1 :: k -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 U1 :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). U1 a -> Rep1 U1 a Исходный код to1 :: forall (a :: k0). Rep1 U1 a -> U1 a Исходный код | |
| Monad (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методы(>>=) :: U1 a -> (a -> U1 b) -> U1 b Исходный код (>>) :: U1 a -> U1 b -> U1 b Исходный код return :: a -> U1 a Исходный код | |
| Functor (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics | |
| Applicative (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыpure :: a -> U1 a Исходный код (<*>) :: U1 (a -> b) -> U1 a -> U1 b Исходный код liftA2 :: (a -> b -> c) -> U1 a -> U1 b -> U1 c Исходный код (*>) :: U1 a -> U1 b -> U1 b Исходный код (<*) :: U1 a -> U1 b -> U1 a Исходный код | |
| Foldable (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => U1 m -> m Исходный код foldMap :: Monoid m => (a -> m) -> U1 a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> U1 a -> m Исходный код foldr :: (a -> b -> b) -> b -> U1 a -> b Исходный код foldr' :: (a -> b -> b) -> b -> U1 a -> b Исходный код foldl :: (b -> a -> b) -> b -> U1 a -> b Исходный код foldl' :: (b -> a -> b) -> b -> U1 a -> b Исходный код foldr1 :: (a -> a -> a) -> U1 a -> a Исходный код foldl1 :: (a -> a -> a) -> U1 a -> a Исходный код toList :: U1 a -> [a] Исходный код null :: U1 a -> Bool Исходный код length :: U1 a -> Int Исходный код elem :: Eq a => a -> U1 a -> Bool Исходный код maximum :: Ord a => U1 a -> a Исходный код minimum :: Ord a => U1 a -> a Исходный код sum :: Num a => U1 a -> a Исходный код product :: Num a => U1 a -> a Исходный код | |
| Traversable (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> U1 a -> f (U1 b) Исходный код sequenceA :: Applicative f => U1 (f a) -> f (U1 a) Исходный код mapM :: Monad m => (a -> m b) -> U1 a -> m (U1 b) Исходный код sequence :: Monad m => U1 (m a) -> m (U1 a) Исходный код | |
| MonadPlus (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics | |
| Alternative (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыempty :: U1 a Исходный код (<|>) :: U1 a -> U1 a -> U1 a Исходный код some :: U1 a -> U1 [a] Исходный код many :: U1 a -> U1 [a] Исходный код | |
| MonadZip (U1 :: Тип -> Тип) | С момента: base-4.9.0.0 |
| Contravariant (U1 :: Type -> Type) | |
| Eq (U1 p) | Since: base-4.9.0.0 |
| Data p => Data (U1 p) | Since: base-4.9.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> U1 p -> c (U1 p) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (U1 p) Source toConstr :: U1 p -> Constr Source dataTypeOf :: U1 p -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (U1 p)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (U1 p)) Source gmapT :: (forall b. Data b => b -> b) -> U1 p -> U1 p Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> U1 p -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> U1 p -> r Source gmapQ :: (forall d. Data d => d -> u) -> U1 p -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> U1 p -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> U1 p -> m (U1 p) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> U1 p -> m (U1 p) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> U1 p -> m (U1 p) Source | |
| Ord (U1 p) | Since: base-4.7.0.0 |
Используется для маркировки появлений параметра
Определено в Data.Foldable Методыfold :: Monoid m => Par1 m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Par1 a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Par1 a -> m Исходный код foldr :: (a -> b -> b) -> b -> Par1 a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Par1 a -> b Исходный код foldl :: (b -> a -> b) -> b -> Par1 a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Par1 a -> b Исходный код foldr1 :: (a -> a -> a) -> Par1 a -> a Исходный код foldl1 :: (a -> a -> a) -> Par1 a -> a Исходный код toList :: Par1 a -> [a] Исходный код null :: Par1 a -> Bool Исходный код length :: Par1 a -> Int Исходный код elem :: Eq a => a -> Par1 a -> Bool Исходный код maximum :: Ord a => Par1 a -> a Исходный код minimum :: Ord a => Par1 a -> a Исходный код sum :: Num a => Par1 a -> a Исходный код product :: Num a => Par1 a -> a Исходный код | |
| Traversable Par1 | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> Par1 a -> f (Par1 b) Исходный код sequenceA :: Applicative f => Par1 (f a) -> f (Par1 a) Исходный код mapM :: Monad m => (a -> m b) -> Par1 a -> m (Par1 b) Исходный код sequence :: Monad m => Par1 (m a) -> m (Par1 a) Исходный код | |
| MonadZip Par1 | С момента: base-4.9.0.0 |
Определено в Control.Monad.Zip Методыmzip :: Par1 a -> Par1 b -> Par1 (a, b) Исходный код mzipWith :: (a -> b -> c) -> Par1 a -> Par1 b -> Par1 c Исходный код munzip :: Par1 (a, b) -> (Par1 a, Par1 b) Исходный код | |
| Eq p => Eq (Par1 p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics | |
| Data p => Data (Par1 p) | С момента: base-4.9.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Par1 p -> c (Par1 p) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Par1 p) Исходный код toConstr :: Par1 p -> Constr Исходный код dataTypeOf :: Par1 p -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Par1 p)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Par1 p)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Par1 p -> Par1 p Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Par1 p -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Par1 p -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Par1 p -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Par1 p -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Par1 p -> m (Par1 p) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Par1 p -> m (Par1 p) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Par1 p -> m (Par1 p) Исходный код | |
| Ord p => Ord (Par1 p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Методыcompare :: Par1 p -> Par1 p -> Ordering Исходный код (<) :: Par1 p -> Par1 p -> Bool Исходный код (<=) :: Par1 p -> Par1 p -> Bool Исходный код (>) :: Par1 p -> Par1 p -> Bool Исходный код (>=) :: Par1 p -> Par1 p -> Bool Исходный код max :: Par1 p -> Par1 p -> Par1 p Исходный код min :: Par1 p -> Par1 p -> Par1 p Исходный код | |
| Read p => Read (Par1 p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS (Par1 p) Исходный код readList :: ReadS [Par1 p] Исходный код readPrec :: ReadPrec (Par1 p) Исходный код readListPrec :: ReadPrec [Par1 p] Исходный код | |
| Show p => Show (Par1 p) | Since: base-4.7.0.0 |
| Generic (Par1 p) | Since: base-4.7.0.0 |
| Semigroup p => Semigroup (Par1 p) | Since: base-4.12.0.0 |
| Monoid p => Monoid (Par1 p) | Since: base-4.12.0.0 |
| Generic1 Par1 | Since: base-4.9.0.0 |
| type Rep (Par1 p) | |
Определено в GHC.Generics | |
| type Rep1 Par1 | |
Определено в GHC.Generics | |
newtype Rec1 (f :: k -> Type) (p :: k) Source
Рекурсивные вызовы типа * -> * (или типа k -> *, когда PolyKinds включен)
Экземпляры
| Generic1 (Rec1 f :: k -> Type) | Since: base-4.9.0.0 |
| Monad f => Monad (Rec1 f) | Since: base-4.9.0.0 |
| Functor f => Functor (Rec1 f) | Since: base-4.9.0.0 |
| MonadFix f => MonadFix (Rec1 f) | Since: base-4.9.0.0 |
Определено в Control.Monad.Fix | |
| Applicative f => Applicative (Rec1 f) | Since: base-4.9.0.0 |
| Foldable f => Foldable (Rec1 f) | Since: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Моноид m => Rec1 f m -> m Исходный код foldMap :: Моноид m => (a -> m) -> Rec1 f a -> m Исходный код foldMap' :: Моноид m => (a -> m) -> Rec1 f a -> m Исходный код foldr :: (a -> b -> b) -> b -> Rec1 f a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Rec1 f a -> b Исходный код foldl :: (b -> a -> b) -> b -> Rec1 f a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Rec1 f a -> b Исходный код foldr1 :: (a -> a -> a) -> Rec1 f a -> a Исходный код foldl1 :: (a -> a -> a) -> Rec1 f a -> a Исходный код toList :: Rec1 f a -> [a] Исходный код null :: Rec1 f a -> Булево Исходный код length :: Rec1 f a -> Целое Исходный код elem :: Eq a => a -> Rec1 f a -> Булево Исходный код maximum :: Ord a => Rec1 f a -> a Исходный код minimum :: Ord a => Rec1 f a -> a Исходный код sum :: Число a => Rec1 f a -> a Исходный код product :: Число a => Rec1 f a -> a Исходный код | |
| Переходимый f => Переходимый (Rec1 f) | С тех пор: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Применимый f0 => (a -> f0 b) -> Rec1 f a -> f0 (Rec1 f b) Исходный код sequenceA :: Применимый f0 => Rec1 f (f0 a) -> f0 (Rec1 f a) Исходный код mapM :: Моноид m => (a -> m b) -> Rec1 f a -> m (Rec1 f b) Исходный код sequence :: Моноид m => Rec1 f (m a) -> m (Rec1 f a) Исходный код | |
| Моноид с нулём f => Моноид с нулём (Rec1 f) | С тех пор: base-4.9.0.0 |
Определено в GHC.Generics | |
| Альтернатива f => Альтернатива (Rec1 f) | С тех пор: base-4.9.0.0 |
Определено в GHC.Generics Методыempty :: Rec1 f a Исходный код (<|>) :: Rec1 f a -> Rec1 f a -> Rec1 f a Исходный код some :: Rec1 f a -> Rec1 f [a] Исходный код many :: Rec1 f a -> Rec1 f [a] Исходный код | |
| MonadZip f => MonadZip (Rec1 f) | С тех пор: base-4.9.0.0 |
| Contravariant f => Contravariant (Rec1 f) | |
| Eq (f p) => Eq (Rec1 f p) | С версии: base-4.7.0.0 |
| (Data (f p), Typeable f, Data p) => Data (Rec1 f p) | С версии: base-4.9.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Rec1 f p -> c (Rec1 f p) Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Rec1 f p) Источник toConstr :: Rec1 f p -> Constr Источник dataTypeOf :: Rec1 f p -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Rec1 f p)) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Rec1 f p)) Источник gmapT :: (forall b. Data b => b -> b) -> Rec1 f p -> Rec1 f p Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Rec1 f p -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Rec1 f p -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Rec1 f p -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Rec1 f p -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Rec1 f p -> m (Rec1 f p) Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Rec1 f p -> m (Rec1 f p) Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Rec1 f p -> m (Rec1 f p) Источник | |
| Ord (f p) => Ord (Rec1 f p) | С версии: base-4.7.0.0 |
| type Rep1 (Rec1 f :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (Rec1 f p) | |
Определено в GHC.Generics | |
newtype K1 (i :: Type) c (p :: k) Источник
Константы, дополнительные параметры и рекурсия типа *
Экземпляры
| Generic1 (K1 i c :: k -> Type) | С версии: base-4.9.0.0 |
| Bifunctor (K1 i :: Type -> Type -> Type) | С версии: base-4.9.0.0 |
| Bifoldable (K1 i :: Type -> Type -> Type) | С версии: base-4.10.0.0 |
| Bitraversable (K1 i :: Type -> Type -> Type) | С версии: base-4.10.0.0 |
Определено в Data.Bitraversable Методыbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> K1 i a b -> f (K1 i c d) Источник | |
| Functor (K1 i c :: Type -> Type) | С версии: base-4.9.0.0 |
| Monoid c => Applicative (K1 i c :: Type -> Type) | С версии: base-4.12.0.0 |
| Foldable (K1 i c :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => K1 i c m -> m Исходный код foldMap :: Monoid m => (a -> m) -> K1 i c a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> K1 i c a -> m Исходный код foldr :: (a -> b -> b) -> b -> K1 i c a -> b Исходный код foldr' :: (a -> b -> b) -> b -> K1 i c a -> b Исходный код foldl :: (b -> a -> b) -> b -> K1 i c a -> b Исходный код foldl' :: (b -> a -> b) -> b -> K1 i c a -> b Исходный код foldr1 :: (a -> a -> a) -> K1 i c a -> a Исходный код foldl1 :: (a -> a -> a) -> K1 i c a -> a Исходный код toList :: K1 i c a -> [a] Исходный код null :: K1 i c a -> Bool Исходный код length :: K1 i c a -> Int Исходный код elem :: Eq a => a -> K1 i c a -> Bool Исходный код maximum :: Ord a => K1 i c a -> a Исходный код minimum :: Ord a => K1 i c a -> a Исходный код sum :: Num a => K1 i c a -> a Исходный код product :: Num a => K1 i c a -> a Исходный код | |
| Traversable (K1 i c :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> K1 i c a -> f (K1 i c b) Исходный код sequenceA :: Applicative f => K1 i c (f a) -> f (K1 i c a) Исходный код mapM :: Monad m => (a -> m b) -> K1 i c a -> m (K1 i c b) Исходный код sequence :: Monad m => K1 i c (m a) -> m (K1 i c a) Исходный код | |
| Contravariant (K1 i c :: Тип -> Тип) | |
Определено в Data.Functor.Contravariant Методыcontramap :: (a -> b) -> K1 i c b -> K1 i c a Исходный код (>$) :: b -> K1 i c b -> K1 i c a Исходный код | |
| Eq c => Eq (K1 i c p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Методы(==) :: K1 i c p -> K1 i c p -> Bool Исходный код (/=) :: K1 i c p -> K1 i c p -> Bool Исходный код | |
| (Typeable i, Data p, Data c) => Data (K1 i c p) | С момента: base-4.9.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> K1 i c p -> c0 (K1 i c p) Исходный код gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (K1 i c p) Исходный код toConstr :: K1 i c p -> Constr Исходный код dataTypeOf :: K1 i c p -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (K1 i c p)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (K1 i c p)) Исходный код gmapT :: (forall b. Data b => b -> b) -> K1 i c p -> K1 i c p Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> K1 i c p -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> K1 i c p -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> K1 i c p -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> K1 i c p -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> K1 i c p -> m (K1 i c p) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> K1 i c p -> m (K1 i c p) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> K1 i c p -> m (K1 i c p) Исходный код | |
| Ord c => Ord (K1 i c p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Методыcompare :: K1 i c p -> K1 i c p -> Ordering Исходный код (<) :: K1 i c p -> K1 i c p -> Bool Исходный код (<=) :: K1 i c p -> K1 i c p -> Bool Исходный код (>) :: K1 i c p -> K1 i c p -> Bool Исходный код (>=) :: K1 i c p -> K1 i c p -> Bool Исходный код max :: K1 i c p -> K1 i c p -> K1 i c p Исходный код min :: K1 i c p -> K1 i c p -> K1 i c p Исходный код | |
| Read c => Read (K1 i c p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS (K1 i c p) Исходный код readList :: ReadS [K1 i c p] Исходный код readPrec :: ReadPrec (K1 i c p) Исходный код readListPrec :: ReadPrec [K1 i c p] Исходный код | |
| Show c => Show (K1 i c p) | Since: base-4.7.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Int -> K1 i c p -> ShowS Исходный код show :: K1 i c p -> String Исходный код showList :: [K1 i c p] -> ShowS Исходный код | |
| Generic (K1 i c p) | Since: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (K1 i c p) :: Type -> Type Исходный код Методыfrom :: K1 i c p -> Rep (K1 i c p) x Исходный код to :: Rep (K1 i c p) x -> K1 i c p Исходный код | |
| Semigroup c => Semigroup (K1 i c p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Методы(<>) :: K1 i c p -> K1 i c p -> K1 i c p Исходный код sconcat :: NonEmpty (K1 i c p) -> K1 i c p Исходный код stimes :: Integral b => b -> K1 i c p -> K1 i c p Исходный код | |
| Monoid c => Monoid (K1 i c p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: K1 i c p Исходный код mappend :: K1 i c p -> K1 i c p -> K1 i c p Исходный код mconcat :: [K1 i c p] -> K1 i c p Исходный код | |
| type Rep1 (K1 i c :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (K1 i c p) | |
Определено в GHC.Generics | |
newtype M1 (i :: Type) (c :: Meta) (f :: k -> Type) (p :: k) Исходный код
Метаинформация (имена конструкторов и т. д.)
Примеры использования
| Generic1 (M1 i c f :: k -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (M1 i c f) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). M1 i c f a -> Rep1 (M1 i c f) a Исходный код to1 :: forall (a :: k0). Rep1 (M1 i c f) a -> M1 i c f a Исходный код | |
| Моноид f => Моноид (M1 i c f) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методы(>>=) :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b Исходный код (>>) :: M1 i c f a -> M1 i c f b -> M1 i c f b Исходный код return :: a -> M1 i c f a Исходный код | |
| Функтор f => Функтор (M1 i c f) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыfmap :: (a -> b) -> M1 i c f a -> M1 i c f b Исходный код (<$) :: a -> M1 i c f b -> M1 i c f a Исходный код | |
| МоноидФикс f => МоноидФикс (M1 i c f) | С момента: base-4.9.0.0 |
Определено в Control.Monad.Fix Методыmfix :: (a -> M1 i c f a) -> M1 i c f a Исходный код | |
| Применимый f => Применимый (M1 i c f) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыpure :: a -> M1 i c f a Исходный код (<*>) :: M1 i c f (a -> b) -> M1 i c f a -> M1 i c f b Исходный код liftA2 :: (a -> b -> c0) -> M1 i c f a -> M1 i c f b -> M1 i c f c0 Исходный код (*>) :: M1 i c f a -> M1 i c f b -> M1 i c f b Исходный код (<*) :: M1 i c f a -> M1 i c f b -> M1 i c f a Исходный код | |
| Сворачиваемый f => Сворачиваемый (M1 i c f) | С момента: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => M1 i c f m -> m Источник foldMap :: Monoid m => (a -> m) -> M1 i c f a -> m Источник foldMap' :: Monoid m => (a -> m) -> M1 i c f a -> m Источник foldr :: (a -> b -> b) -> b -> M1 i c f a -> b Источник foldr' :: (a -> b -> b) -> b -> M1 i c f a -> b Источник foldl :: (b -> a -> b) -> b -> M1 i c f a -> b Источник foldl' :: (b -> a -> b) -> b -> M1 i c f a -> b Источник foldr1 :: (a -> a -> a) -> M1 i c f a -> a Источник foldl1 :: (a -> a -> a) -> M1 i c f a -> a Источник toList :: M1 i c f a -> [a] Источник null :: M1 i c f a -> Bool Источник length :: M1 i c f a -> Int Источник elem :: Eq a => a -> M1 i c f a -> Bool Источник maximum :: Ord a => M1 i c f a -> a Источник minimum :: Ord a => M1 i c f a -> a Источник | |
| Traversable f => Traversable (M1 i c f) | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f0 => (a -> f0 b) -> M1 i c f a -> f0 (M1 i c f b) Источник sequenceA :: Applicative f0 => M1 i c f (f0 a) -> f0 (M1 i c f a) Источник mapM :: Monad m => (a -> m b) -> M1 i c f a -> m (M1 i c f b) Источник sequence :: Monad m => M1 i c f (m a) -> m (M1 i c f a) Источник | |
| MonadPlus f => MonadPlus (M1 i c f) | С момента: base-4.9.0.0 |
| Alternative f => Alternative (M1 i c f) | С момента: base-4.9.0.0 |
| MonadZip f => MonadZip (M1 i c f) | С момента: base-4.9.0.0 |
| Contravariant f => Contravariant (M1 i c f) | |
| Eq (f p) => Eq (M1 i c f p) | Since: base-4.7.0.0 |
| (Data p, Data (f p), Typeable c, Typeable i, Typeable f) => Data (M1 i c f p) | Since: base-4.9.0.0 |
Defined in Data.Data Методыgfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> M1 i c f p -> c0 (M1 i c f p) Source gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (M1 i c f p) Source toConstr :: M1 i c f p -> Constr Source dataTypeOf :: M1 i c f p -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (M1 i c f p)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (M1 i c f p)) Source gmapT :: (forall b. Data b => b -> b) -> M1 i c f p -> M1 i c f p Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> M1 i c f p -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> M1 i c f p -> r Source gmapQ :: (forall d. Data d => d -> u) -> M1 i c f p -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> M1 i c f p -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> M1 i c f p -> m (M1 i c f p) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> M1 i c f p -> m (M1 i c f p) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> M1 i c f p -> m (M1 i c f p) Source | |
| Ord (f p) => Ord (M1 i c f p) | Since: base-4.7.0.0 |
Определено в GHC.Generics Методыcompare :: M1 i c f p -> M1 i c f p -> Ordering Исходный код (<) :: M1 i c f p -> M1 i c f p -> Bool Исходный код (<=) :: M1 i c f p -> M1 i c f p -> Bool Исходный код (>) :: M1 i c f p -> M1 i c f p -> Bool Исходный код (>=) :: M1 i c f p -> M1 i c f p -> Bool Исходный код max :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код min :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код | |
| Read (f p) => Read (M1 i c f p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS (M1 i c f p) Исходный код readList :: ReadS [M1 i c f p] Исходный код readPrec :: ReadPrec (M1 i c f p) Исходный код readListPrec :: ReadPrec [M1 i c f p] Исходный код | |
| Show (f p) => Show (M1 i c f p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Int -> M1 i c f p -> ShowS Исходный код show :: M1 i c f p -> String Исходный код showList :: [M1 i c f p] -> ShowS Исходный код | |
| Generic (M1 i c f p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (M1 i c f p) :: Type -> Type Исходный код Методыfrom :: M1 i c f p -> Rep (M1 i c f p) x Исходный код to :: Rep (M1 i c f p) x -> M1 i c f p Исходный код | |
| Semigroup (f p) => Semigroup (M1 i c f p) | С момента: base-4.12.0.0 |
Определено в GHC.Generics Методы(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код sconcat :: NonEmpty (M1 i c f p) -> M1 i c f p Исходный код stimes :: Integral b => b -> M1 i c f p -> M1 i c f p Исходный код | |
| Monoid (f p) => Monoid (M1 i c f p) | С момента: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: M1 i c f p Исходный код mappend :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код mconcat :: [M1 i c f p] -> M1 i c f p Исходный код | |
| type Rep1 (M1 i c f :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (M1 i c f p) | |
Определено в GHC.Generics | |
data ((f :: k -> Type) :+: (g :: k -> Type)) (p :: k) infixr 5 Source
Суммы: кодирование выбора между конструкторами
Экземпляры
| Generic1 (f :+: g :: k -> Type) | С версии: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (f :+: g) | С версии: base-4.9.0.0 |
| (Foldable f, Foldable g) => Foldable (f :+: g) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => (f :+: g) m -> m Источник foldMap :: Monoid m => (a -> m) -> (f :+: g) a -> m Источник foldMap' :: Monoid m => (a -> m) -> (f :+: g) a -> m Источник foldr :: (a -> b -> b) -> b -> (f :+: g) a -> b Источник foldr' :: (a -> b -> b) -> b -> (f :+: g) a -> b Источник foldl :: (b -> a -> b) -> b -> (f :+: g) a -> b Источник foldl' :: (b -> a -> b) -> b -> (f :+: g) a -> b Источник foldr1 :: (a -> a -> a) -> (f :+: g) a -> a Источник foldl1 :: (a -> a -> a) -> (f :+: g) a -> a Источник toList :: (f :+: g) a -> [a] Источник null :: (f :+: g) a -> Bool Источник length :: (f :+: g) a -> Int Источник elem :: Eq a => a -> (f :+: g) a -> Bool Источник maximum :: Ord a => (f :+: g) a -> a Источник minimum :: Ord a => (f :+: g) a -> a Источник | |
| (Traversable f, Traversable g) => Traversable (f :+: g) | С версии: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f0 => (a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) Исходный код sequenceA :: Applicative f0 => (f :+: g) (f0 a) -> f0 ((f :+: g) a) Исходный код mapM :: Monad m => (a -> m b) -> (f :+: g) a -> m ((f :+: g) b) Исходный код sequence :: Monad m => (f :+: g) (m a) -> m ((f :+: g) a) Исходный код | |
| (Contravariant f, Contravariant g) => Contravariant (f :+: g) | |
Определено в Data.Functor.Contravariant Методыcontramap :: (a -> b) -> (f :+: g) b -> (f :+: g) a Исходный код (>$) :: b -> (f :+: g) b -> (f :+: g) a Исходный код | |
| (Eq (f p), Eq (g p)) => Eq ((f :+: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Методы(==) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код (/=) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код | |
| (Typeable f, Typeable g, Data p, Data (f p), Data (g p)) => Data ((f :+: g) p) | С момента: base-4.9.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g0. g0 -> c g0) -> (f :+: g) p -> c ((f :+: g) p) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ((f :+: g) p) Исходный код toConstr :: (f :+: g) p -> Constr Исходный код dataTypeOf :: (f :+: g) p -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ((f :+: g) p)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ((f :+: g) p)) Исходный код gmapT :: (forall b. Data b => b -> b) -> (f :+: g) p -> (f :+: g) p Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> (f :+: g) p -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> (f :+: g) p -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> (f :+: g) p -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> (f :+: g) p -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> (f :+: g) p -> m ((f :+: g) p) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :+: g) p -> m ((f :+: g) p) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :+: g) p -> m ((f :+: g) p) Исходный код | |
| (Ord (f p), Ord (g p)) => Ord ((f :+: g) p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics Методыcompare :: (f :+: g) p -> (f :+: g) p -> Ordering Исходный код (<) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код (<=) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код (>) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код (>=) :: (f :+: g) p -> (f :+: g) p -> Bool Исходный код max :: (f :+: g) p -> (f :+: g) p -> (f :+: g) p Исходный код min :: (f :+: g) p -> (f :+: g) p -> (f :+: g) p Исходный код | |
| (Read (f p), Read (g p)) => Read ((f :+: g) p) | С версии: base-4.7.0.0 |
data ((f :: k -> Тип) :*: (g :: k -> Тип)) (p :: k) infixr 6 Исходный код
Продукты: кодирование нескольких аргументов конструкторов
Конструкторы
| (f p) :*: (g p) infixr 6 |
Примеры
| Generic1 (f :*: g :: k -> Тип) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (f :*: g) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). (f :*: g) a -> Rep1 (f :*: g) a Исходный код to1 :: forall (a :: k0). Rep1 (f :*: g) a -> (f :*: g) a Исходный код | |
| (Монадa f, Монадa g) => Монадa (f :*: g) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Методы(>>=) :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b Исходный код (>>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b Исходный код return :: a -> (f :*: g) a Исходный код | |
| (Функтор f, Функтор g) => Функтор (f :*: g) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Методыfmap :: (a -> b) -> (f :*: g) a -> (f :*: g) b Исходный код (<$) :: a -> (f :*: g) b -> (f :*: g) a Исходный код | |
| (МонадФикс f, МонадФикс g) => МонадФикс (f :*: g) | С версии: base-4.9.0.0 |
Определено в Control.Monad.Fix Методыmfix :: (a -> (f :*: g) a) -> (f :*: g) a Исходный код | |
| (Прикладной f, Прикладной g) => Прикладной (f :*: g) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Методыpure :: a -> (f :*: g) a Исходный код (<*>) :: (f :*: g) (a -> b) -> (f :*: g) a -> (f :*: g) b Исходный код liftA2 :: (a -> b -> c) -> (f :*: g) a -> (f :*: g) b -> (f :*: g) c Исходный код (*>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b Исходный код (<*) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) a Исходный код | |
| (Складываемый f, Складываемый g) => Складываемый (f :*: g) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => (f :*: g) m -> m Исходный код foldMap :: Monoid m => (a -> m) -> (f :*: g) a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> (f :*: g) a -> m Исходный код foldr :: (a -> b -> b) -> b -> (f :*: g) a -> b Исходный код foldr' :: (a -> b -> b) -> b -> (f :*: g) a -> b Исходный код foldl :: (b -> a -> b) -> b -> (f :*: g) a -> b Исходный код foldl' :: (b -> a -> b) -> b -> (f :*: g) a -> b Исходный код foldr1 :: (a -> a -> a) -> (f :*: g) a -> a Исходный код foldl1 :: (a -> a -> a) -> (f :*: g) a -> a Исходный код toList :: (f :*: g) a -> [a] Исходный код null :: (f :*: g) a -> Bool Исходный код length :: (f :*: g) a -> Int Исходный код elem :: Eq a => a -> (f :*: g) a -> Bool Исходный код maximum :: Ord a => (f :*: g) a -> a Исходный код minimum :: Ord a => (f :*: g) a -> a Исходный код sum :: Num a => (f :*: g) a -> a Исходный код product :: Num a => (f :*: g) a -> a Исходный код | |
| (Traversable f, Traversable g) => Traversable (f :*: g) | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f0 => (a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) Исходный код sequenceA :: Applicative f0 => (f :*: g) (f0 a) -> f0 ((f :*: g) a) Исходный код mapM :: Monad m => (a -> m b) -> (f :*: g) a -> m ((f :*: g) b) Исходный код sequence :: Monad m => (f :*: g) (m a) -> m ((f :*: g) a) Исходный код | |
| (MonadPlus f, MonadPlus g) => MonadPlus (f :*: g) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыmzero :: (f :*: g) a Исходный код mplus :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a Исходный код | |
| (Alternative f, Alternative g) => Alternative (f :*: g) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыempty :: (f :*: g) a Исходный код (<|>) :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a Исходный код some :: (f :*: g) a -> (f :*: g) [a] Исходный код many :: (f :*: g) a -> (f :*: g) [a] Исходный код | |
| (МонадныйЗип f, МонадныйЗип g) => МонадныйЗип (f :*: g) | С момента: base-4.9.0.0 |
Определено в Control.Monad.Zip Методыmzip :: (f :*: g) a -> (f :*: g) b -> (f :*: g) (a, b) Исходный код mzipWith :: (a -> b -> c) -> (f :*: g) a -> (f :*: g) b -> (f :*: g) c Исходный код munzip :: (f :*: g) (a, b) -> ((f :*: g) a, (f :*: g) b) Исходный код | |
| (Противовариант f, Противовариант g) => Противовариант (f :*: g) | |
Определено в Data.Functor.Contravariant Методыcontramap :: (a -> b) -> (f :*: g) b -> (f :*: g) a Исходный код (>$) :: b -> (f :*: g) b -> (f :*: g) a Исходный код | |
| (Равно (f p), Равно (g p)) => Равно ((f :*: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Методы(==) :: (f :*: g) p -> (f :*: g) p -> Булево Исходный код (/=) :: (f :*: g) p -> (f :*: g) p -> Булево Исходный код | |
| (Типируемый f, Типируемый g, Данные p, Данные (f p), Данные (g p)) => Данные ((f :*: g) p) | С момента: base-4.9.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g0. g0 -> c g0) -> (f :*: g) p -> c ((f :*: g) p) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ((f :*: g) p) Исходный код toConstr :: (f :*: g) p -> Constr Исходный код dataTypeOf :: (f :*: g) p -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ((f :*: g) p)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ((f :*: g) p)) Исходный код gmapT :: (forall b. Data b => b -> b) -> (f :*: g) p -> (f :*: g) p Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> (f :*: g) p -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> (f :*: g) p -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> (f :*: g) p -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> (f :*: g) p -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> (f :*: g) p -> m ((f :*: g) p) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :*: g) p -> m ((f :*: g) p) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :*: g) p -> m ((f :*: g) p) Исходный код | |
| (Ord (f p), Ord (g p)) => Ord ((f :*: g) p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics Методыcompare :: (f :*: g) p -> (f :*: g) p -> Ordering Исходный код (<) :: (f :*: g) p -> (f :*: g) p -> Bool Исходный код (<=) :: (f :*: g) p -> (f :*: g) p -> Bool Исходный код (>) :: (f :*: g) p -> (f :*: g) p -> Bool Исходный код (>=) :: (f :*: g) p -> (f :*: g) p -> Bool Исходный код max :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Исходный код min :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Исходный код | |
| (Read (f p), Read (g p)) => Read ((f :*: g) p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS ((f :*: g) p) Исходный код readList :: ReadS [(f :*: g) p] Исходный код readPrec :: ReadPrec ((f :*: g) p) Исходный код readListPrec :: ReadPrec [(f :*: g) p] Исходный код | |
| (Show (f p), Show (g p)) => Show ((f :*: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Int -> (f :*: g) p -> ShowS Исходный код show :: (f :*: g) p -> String Исходный код showList :: [(f :*: g) p] -> ShowS Исходный код | |
| Generic ((f :*: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep ((f :*: g) p) :: Type -> Type Исходный код Методыfrom :: (f :*: g) p -> Rep ((f :*: g) p) x Исходный код to :: Rep ((f :*: g) p) x -> (f :*: g) p Исходный код | |
| (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) | С момента: base-4.12.0.0 |
Определено в GHC.Generics Методы(<>) :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Исходный код sconcat :: NonEmpty ((f :*: g) p) -> (f :*: g) p Исходный код stimes :: Integral b => b -> (f :*: g) p -> (f :*: g) p Исходный код | |
| (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) | С момента: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: (f :*: g) p Исходный код mappend :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Исходный код mconcat :: [(f :*: g) p] -> (f :*: g) p Исходный код | |
| type Rep1 (f :*: g :: k -> Type) | |
Определено в GHC.Generics type Rep1 (f :*: g :: k -> Type) = D1 ('MetaData ":*:" "GHC.Generics" "base" 'False) (C1 ('MetaCons ":*:" ('InfixI 'RightAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 g))) | |
| type Rep ((f :*: g) p) | |
Определено в GHC.Generics тип Rep ((f :*: g) p) = D1 ('MetaData ":*:" "GHC.Generics" "base" 'False) (C1 ('MetaCons ":*:" ('InfixI 'RightAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (g p)))) |
newtype ((f :: k2 -> Тип) :.: (g :: k1 -> k2)) (p :: k1) infixr 7 Источник
Состав функций
Экземпляры
| Functor f => Generic1 (f :.: g :: k -> Тип) | С момента: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (f :.: g) | С момента: base-4.9.0.0 |
| (Applicative f, Applicative g) => Applicative (f :.: g) | С момента: base-4.9.0.0 |
| (Foldable f, Foldable g) => Foldable (f :.: g) | С момента: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => (f :.: g) m -> m Источник foldMap :: Monoid m => (a -> m) -> (f :.: g) a -> m Источник foldMap' :: Monoid m => (a -> m) -> (f :.: g) a -> m Источник foldr :: (a -> b -> b) -> b -> (f :.: g) a -> b Источник foldr' :: (a -> b -> b) -> b -> (f :.: g) a -> b Источник foldl :: (b -> a -> b) -> b -> (f :.: g) a -> b Источник foldl' :: (b -> a -> b) -> b -> (f :.: g) a -> b Источник foldr1 :: (a -> a -> a) -> (f :.: g) a -> a Источник foldl1 :: (a -> a -> a) -> (f :.: g) a -> a Источник toList :: (f :.: g) a -> [a] Источник null :: (f :.: g) a -> Bool Источник length :: (f :.: g) a -> Int Источник elem :: Eq a => a -> (f :.: g) a -> Bool Источник maximum :: Ord a => (f :.: g) a -> a Источник minimum :: Ord a => (f :.: g) a -> a Источник | |
| (Traversable f, Traversable g) => Traversable (f :.: g) | С момента: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f0 => (a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) Источник sequenceA :: Applicative f0 => (f :.: g) (f0 a) -> f0 ((f :.: g) a) Источник mapM :: Monad m => (a -> m b) -> (f :.: g) a -> m ((f :.: g) b) Источник sequence :: Monad m => (f :.: g) (m a) -> m ((f :.: g) a) Источник | |
| (Alternative f, Applicative g) => Alternative (f :.: g) | С момента: base-4.9.0.0 |
| (Functor f, Contravariant g) => Contravariant (f :.: g) | |
| Eq (f (g p)) => Eq ((f :.: g) p) | Since: base-4.7.0.0 |
| (Typeable f, Typeable g, Data p, Data (f (g p))) => Data ((f :.: g) p) | Since: base-4.9.0.0 |
Defined in Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g0. g0 -> c g0) -> (f :.: g) p -> c ((f :.: g) p) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ((f :.: g) p) Source toConstr :: (f :.: g) p -> Constr Source dataTypeOf :: (f :.: g) p -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ((f :.: g) p)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ((f :.: g) p)) Source gmapT :: (forall b. Data b => b -> b) -> (f :.: g) p -> (f :.: g) p Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> (f :.: g) p -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> (f :.: g) p -> r Source gmapQ :: (forall d. Data d => d -> u) -> (f :.: g) p -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> (f :.: g) p -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> (f :.: g) p -> m ((f :.: g) p) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :.: g) p -> m ((f :.: g) p) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> (f :.: g) p -> m ((f :.: g) p) Source | |
| Ord (f (g p)) => Ord ((f :.: g) p) | Since: base-4.7.0.0 |
Defined in GHC.Generics Методыcompare :: (f :.: g) p -> (f :.: g) p -> Ordering Source (<) :: (f :.: g) p -> (f :.: g) p -> Bool Source (<=) :: (f :.: g) p -> (f :.: g) p -> Bool Source (>) :: (f :.: g) p -> (f :.: g) p -> Bool Source (>=) :: (f :.: g) p -> (f :.: g) p -> Bool Source | |
| Read (f (g p)) => Read ((f :.: g) p) | Since: base-4.7.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Целое -> ReadS ((f :.: g) p) Исходный код readList :: ReadS [(f :.: g) p] Исходный код readPrec :: ReadPrec ((f :.: g) p) Исходный код readListPrec :: ReadPrec [(f :.: g) p] Исходный код | |
| Show (f (g p)) => Show ((f :.: g) p) | Since: base-4.7.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Целое -> (f :.: g) p -> ShowS Исходный код show :: (f :.: g) p -> Строка Исходный код showList :: [(f :.: g) p] -> ShowS Исходный код | |
| Generic ((f :.: g) p) | Since: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep ((f :.: g) p) :: Тип -> Тип Исходный код Методыfrom :: (f :.: g) p -> Rep ((f :.: g) p) x Исходный код to :: Rep ((f :.: g) p) x -> (f :.: g) p Исходный код | |
| Полугруппа (f (g p)) => Полугруппа ((f :.: g) p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Методы(<>) :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Исходный код sconcat :: Непустой список ((f :.: g) p) -> (f :.: g) p Исходный код stimes :: Целочисленное b => b -> (f :.: g) p -> (f :.: g) p Исходный код | |
| Моноид (f (g p)) => Моноид ((f :.: g) p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: (f :.: g) p Исходный код mappend :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Исходный код mconcat :: [(f :.: g) p] -> (f :.: g) p Исходный код | |
| type Rep1 (f :.: g :: k -> Тип) | |
Определено в GHC.Generics | |
| type Rep ((f :.: g) p) | |
Определено в GHC.Generics |
Типы представлений без упаковки
data family URec (a :: Type) (p :: k) Source
Константы неулучшенных типов
С момента: base-4.9.0.0
Экземпляры
| Generic1 (URec Word :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Int :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Float :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Double :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Char :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec (Ptr ()) :: k -> Type) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (URec (Ptr ())) :: k -> Тип Исходный код | |
| Foldable (UAddr :: Тип -> Тип) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Моноид m => UAddr m -> m Исходный код foldMap :: Моноид m => (a -> m) -> UAddr a -> m Исходный код foldMap' :: Моноид m => (a -> m) -> UAddr a -> m Исходный код foldr :: (a -> b -> b) -> b -> UAddr a -> b Исходный код foldr' :: (a -> b -> b) -> b -> UAddr a -> b Исходный код foldl :: (b -> a -> b) -> b -> UAddr a -> b Исходный код foldl' :: (b -> a -> b) -> b -> UAddr a -> b Исходный код foldr1 :: (a -> a -> a) -> UAddr a -> a Исходный код foldl1 :: (a -> a -> a) -> UAddr a -> a Исходный код toList :: UAddr a -> [a] Исходный код null :: UAddr a -> Булево Исходный код length :: UAddr a -> Целое Исходный код elem :: Eq a => a -> UAddr a -> Булево Исходный код maximum :: Ord a => UAddr a -> a Исходный код minimum :: Ord a => UAddr a -> a Исходный код sum :: Число a => UAddr a -> a Исходный код product :: Число a => UAddr a -> a Исходный код | |
| Foldable (UChar :: Тип -> Тип) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UChar m -> m Исходный код foldMap :: Monoid m => (a -> m) -> UChar a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> UChar a -> m Исходный код foldr :: (a -> b -> b) -> b -> UChar a -> b Исходный код foldr' :: (a -> b -> b) -> b -> UChar a -> b Исходный код foldl :: (b -> a -> b) -> b -> UChar a -> b Исходный код foldl' :: (b -> a -> b) -> b -> UChar a -> b Исходный код foldr1 :: (a -> a -> a) -> UChar a -> a Исходный код foldl1 :: (a -> a -> a) -> UChar a -> a Исходный код toList :: UChar a -> [a] Исходный код null :: UChar a -> Bool Исходный код length :: UChar a -> Int Исходный код elem :: Eq a => a -> UChar a -> Bool Исходный код maximum :: Ord a => UChar a -> a Исходный код minimum :: Ord a => UChar a -> a Исходный код sum :: Num a => UChar a -> a Исходный код product :: Num a => UChar a -> a Исходный код | |
| Foldable (UDouble :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UDouble m -> m Исходный код foldMap :: Monoid m => (a -> m) -> UDouble a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> UDouble a -> m Исходный код foldr :: (a -> b -> b) -> b -> UDouble a -> b Исходный код foldr' :: (a -> b -> b) -> b -> UDouble a -> b Исходный код foldl :: (b -> a -> b) -> b -> UDouble a -> b Исходный код foldl' :: (b -> a -> b) -> b -> UDouble a -> b Исходный код foldr1 :: (a -> a -> a) -> UDouble a -> a Исходный код foldl1 :: (a -> a -> a) -> UDouble a -> a Исходный код toList :: UDouble a -> [a] Исходный код null :: UDouble a -> Bool Исходный код length :: UDouble a -> Int Исходный код elem :: Eq a => a -> UDouble a -> Bool Исходный код maximum :: Ord a => UDouble a -> a Исходный код minimum :: Ord a => UDouble a -> a Исходный код sum :: Num a => UDouble a -> a Исходный код product :: Num a => UDouble a -> a Исходный код | |
| Foldable (UFloat :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Моноид m => UFloat m -> m Исходный код foldMap :: Моноид m => (a -> m) -> UFloat a -> m Исходный код foldMap' :: Моноид m => (a -> m) -> UFloat a -> m Исходный код foldr :: (a -> b -> b) -> b -> UFloat a -> b Исходный код foldr' :: (a -> b -> b) -> b -> UFloat a -> b Исходный код foldl :: (b -> a -> b) -> b -> UFloat a -> b Исходный код foldl' :: (b -> a -> b) -> b -> UFloat a -> b Исходный код foldr1 :: (a -> a -> a) -> UFloat a -> a Исходный код foldl1 :: (a -> a -> a) -> UFloat a -> a Исходный код toList :: UFloat a -> [a] Исходный код null :: UFloat a -> Булево Исходный код length :: UFloat a -> Целое Исходный код elem :: Eq a => a -> UFloat a -> Булево Исходный код maximum :: Ord a => UFloat a -> a Исходный код minimum :: Ord a => UFloat a -> a Исходный код sum :: Число a => UFloat a -> a Исходный код product :: Число a => UFloat a -> a Исходный код | |
| Foldable (UInt :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UInt m -> m Source foldMap :: Monoid m => (a -> m) -> UInt a -> m Source foldMap' :: Monoid m => (a -> m) -> UInt a -> m Source foldr :: (a -> b -> b) -> b -> UInt a -> b Source foldr' :: (a -> b -> b) -> b -> UInt a -> b Source foldl :: (b -> a -> b) -> b -> UInt a -> b Source foldl' :: (b -> a -> b) -> b -> UInt a -> b Source foldr1 :: (a -> a -> a) -> UInt a -> a Source foldl1 :: (a -> a -> a) -> UInt a -> a Source toList :: UInt a -> [a] Source length :: UInt a -> Int Source elem :: Eq a => a -> UInt a -> Bool Source maximum :: Ord a => UInt a -> a Source minimum :: Ord a => UInt a -> a Source | |
| Foldable (UWord :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UWord m -> m Source foldMap :: Monoid m => (a -> m) -> UWord a -> m Source foldMap' :: Monoid m => (a -> m) -> UWord a -> m Source foldr :: (a -> b -> b) -> b -> UWord a -> b Source foldr' :: (a -> b -> b) -> b -> UWord a -> b Source foldl :: (b -> a -> b) -> b -> UWord a -> b Source foldl' :: (b -> a -> b) -> b -> UWord a -> b Source foldr1 :: (a -> a -> a) -> UWord a -> a Source foldl1 :: (a -> a -> a) -> UWord a -> a Source toList :: UWord a -> [a] Source null :: UWord a -> Bool Source length :: UWord a -> Int Source elem :: Eq a => a -> UWord a -> Bool Source maximum :: Ord a => UWord a -> a Source minimum :: Ord a => UWord a -> a Source | |
| Traversable (UWord :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Char :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Double :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Float :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Int :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Word :: Type -> Type) | Since: base-4.9.0.0 |
| Show (URec Double p) | С момента: base-4.9.0.0 |
| Show (URec Символ p) | С момента: base-4.9.0.0 |
| Generic (URec Целое без знака p) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыfrom :: URec Целое без знака p -> Rep (URec Целое без знака p) x Источник to :: Rep (URec Целое без знака p) x -> URec Целое без знака p Источник | |
| Generic (URec Целое число p) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыfrom :: URec Целое число p -> Rep (URec Целое число p) x Источник to :: Rep (URec Целое число p) x -> URec Целое число p Источник | |
| Generic (URec Float p) | |
| Generic (URec Double p) | С момента: base-4.9.0.0 |
| Generic (URec Char p) | С версии: base-4.9.0.0 |
| Generic (URec (Ptr ()) p) | С версии: base-4.9.0.0 |
| data URec Word (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| data URec Int (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| data URec Float (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| data URec Double (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| data URec Char (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| data URec (Ptr ()) (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| type Rep1 (URec Word :: k -> Type) | |
Определено в GHC.Generics | |
| тип Rep1 (URec Целое :: k -> Тип) | |
Определено в GHC.Generics | |
| тип Rep1 (URec Вещественное :: k -> Тип) | |
Определено в GHC.Generics тип Rep1 (URec Вещественное :: k -> Тип) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UFloat" 'PrefixI 'True) (S1 ('MetaSel ('Just "uFloat#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UFloat :: k -> Тип))) | |
| тип Rep1 (URec Двойное :: k -> Тип) | |
Определено в GHC.Generics | |
| тип Rep1 (URec Символ :: k -> Тип) | |
Определено в GHC.Generics | |
| тип Rep1 (URec (Указатель ()) :: k -> Тип) | |
Определено в GHC.Generics | |
| тип Rep (URec Word p) | |
Определено в GHC.Generics | |
| type Rep (URec Int p) | |
Определено в GHC.Generics | |
| type Rep (URec Float p) | |
Определено в GHC.Generics | |
| type Rep (URec Double p) | |
Определено в GHC.Generics | |
| type Rep (URec Char p) | |
Определено в GHC.Generics | |
| type Rep (URec (Ptr ()) p) | |
Определено в GHC.Generics | |
type UAddr = URec (Ptr ()) Исходный код
С момента: base-4.9.0.0
type UChar = URec Char Исходный код
С момента: base-4.9.0.0
type UDouble = URec Double Исходный код
Псевдоним типа для URec Double#
С момента: base-4.9.0.0
type UFloat = URec Float Source
С тех пор как: base-4.9.0.0
С тех пор как: base-4.9.0.0
С тех пор как: base-4.9.0.0
Синонимы для удобства
Синоним типа для кодирования рекурсии (вида Type)
Тег для K1: рекурсия (вида Type)
Синоним типа для кодирования метаинформации для типов данных
Синоним типа для кодирования метаинформации для конструкторов
Синоним типа для кодирования метаинформации для селекторов записей
Тег для M1: тип данных
Тег для M1: конструктор
Тег для M1: селектор записи
Метаинформация
Класс для типов данных, представляющих типы данных
Минимальное полное определение
Методы
datatypeName :: t d (f :: k -> Type) (a :: k) -> [Char] Source
Имя типа данных (без квалификатора)
moduleName :: t d (f :: k -> Type) (a :: k) -> [Char] Source
Полное имя модуля, где объявлен тип
packageName :: t d (f :: k -> Type) (a :: k) -> [Char] Source
Имя пакета модуля, где объявлен тип
С тех пор как: base-4.9.0.0
isNewtype :: t d (f :: k -> Type) (a :: k) -> Bool Source
Помечает, является ли тип данных на самом деле newtype
С тех пор как: base-4.7.0.0
Примеры
| (KnownSymbol n, KnownSymbol m, KnownSymbol p, SingI nt) => Datatype ('MetaData n m p nt :: Meta) | С тех пор как: base-4.9.0.0 |
Определено в GHC.Generics МетодыdatatypeName :: forall k t (f :: k -> Type) (a :: k). t ('MetaData n m p nt) f a -> [Char] Source moduleName :: forall k t (f :: k -> Type) (a :: k). t ('MetaData n m p nt) f a -> [Char] Source packageName :: forall k t (f :: k -> Type) (a :: k). t ('MetaData n m p nt) f a -> [Char] Source isNewtype :: forall k t (f :: k -> Type) (a :: k). t ('MetaData n m p nt) f a -> Bool Source | |
class Constructor c where Source
Класс для типов данных, представляющих конструкторы данных
Минимальное полное определение
Примеры
| (KnownSymbol n, SingI f, SingI r) => Конструктор ('MetaCons n f r :: Мета) | С момента: base-4.9.0.0 |
Определено в GHC.Generics МетодыconName :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> [Символ] Исходный код conFixity :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> Фиксированность Исходный код conIsRecord :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> Булево Исходный код | |
class Селектор s where Исходный код
Класс для типов данных, представляющих записи
Методы
selName :: t s (f :: k -> Тип) (a :: k) -> [Символ] Исходный код
Имя селектора
selSourceUnpackedness :: t s (f :: k -> Тип) (a :: k) -> SourceUnpackedness Исходный код
Аннотация раскрутки селектора (при наличии)
С момента: base-4.9.0.0
selSourceStrictness :: t s (f :: k -> Тип) (a :: k) -> SourceStrictness Исходный код
Аннотация строгости селектора (при наличии)
С момента: base-4.9.0.0
selDecidedStrictness :: t s (f :: k -> Тип) (a :: k) -> DecidedStrictness Исходный код
Строгость, выведенная компилятором для селектора
С момента: base-4.9.0.0
Примеры
| (SingI mn, SingI su, SingI ss, SingI ds) => Селектор ('MetaSel mn su ss ds :: Мета) | С момента: base-4.9.0.0 |
Определено в GHC.Generics МетодыselName :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> [Символ] Исходный код selSourceUnpackedness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> SourceUnpackedness Исходный код selSourceStrictness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> SourceStrictness Исходный код selDecidedStrictness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> DecidedStrictness Исходный код | |
data Фиксированность Исходный код
Тип данных для представления фиксированности конструктора. Инфиксная инструкция | напрямую соответствует применению Infix.
Конструкторы
| Префикс | |
| Инфикс Ассоциативность Целое |
Экземпляры
| Eq Fixity | С версии: base-4.6.0.0 |
| Data Fixity | С версии: base-4.9.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fixity -> c Fixity Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Fixity Источник toConstr :: Fixity -> Constr Источник dataTypeOf :: Fixity -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Fixity) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Fixity) Источник gmapT :: (forall b. Data b => b -> b) -> Fixity -> Fixity Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fixity -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Fixity -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Fixity -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixity -> m Fixity Источник | |
| Ord Fixity | С версии: base-4.6.0.0 |
| Read Fixity | С версии: base-4.6.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS Fixity Исходный код readList :: ReadS [Fixity] Исходный код | |
| Show Fixity | С момента: base-4.6.0.0 |
Определено в GHC.Generics МетодыshowsPrec :: Int -> Fixity -> ShowS Исходный код show :: Fixity -> String Исходный код showList :: [Fixity] -> ShowS Исходный код | |
| Generic Fixity | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep Fixity :: Type -> Type Исходный код | |
| type Rep Fixity | |
Определено в GHC.Generics type Rep Fixity = D1 ('MetaData "Fixity" "GHC.Generics" "base" 'False) (C1 ('MetaCons "Prefix" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Infix" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Associativity) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) | |
data FixityI Исходный код
Этот вариант Fixity появляется на уровне типа.
С момента: base-4.9.0.0
Конструкторы
| PrefixI | |
| InfixI Associativity Nat |
data Associativity Исходный код
Тип данных для представления ассоциативности конструктора
Конструкторы
| LeftAssociative | |
| RightAssociative | |
| NotAssociative |
Примеры реализации
| Ограниченное Ассоциативность | С момента: base-4.9.0.0 |
Определено в GHC.Generics | |
| Перечисление Ассоциативность | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыsucc :: Ассоциативность -> Ассоциативность Исходный код pred :: Ассоциативность -> Ассоциативность Исходный код toEnum :: Целое -> Ассоциативность Исходный код fromEnum :: Ассоциативность -> Целое Исходный код enumFrom :: Ассоциативность -> [Ассоциативность] Исходный код enumFromThen :: Ассоциативность -> Ассоциативность -> [Ассоциативность] Исходный код enumFromTo :: Ассоциативность -> Ассоциативность -> [Ассоциативность] Исходный код enumFromThenTo :: Ассоциативность -> Ассоциативность -> Ассоциативность -> [Ассоциативность] Исходный код | |
| Равенство Ассоциативность | С момента: base-4.6.0.0 |
Определено в GHC.Generics Методы(==) :: Ассоциативность -> Ассоциативность -> Булево Исходный код (/=) :: Ассоциативность -> Ассоциативность -> Булево Исходный код | |
| Данные Ассоциативность | С момента: base-4.9.0.0 |
prec :: Fixity -> Int Исходный код
Получение приоритета значения фиксированности.
data SourceUnpackedness Исходный код
Неупакованность поля, как пользователь написал его в исходном коде. Например, в следующем типе данных:
data E = ExampleConstructor Int
{-# NOUNPACK #-} Int
{-# UNPACK #-} Int
Поля ExampleConstructor имеют NoSourceUnpackedness, SourceNoUnpack, и SourceUnpack, соответственно.
С момента: base-4.9.0.0
Конструкторы
| NoSourceUnpackedness | |
| SourceNoUnpack | |
| SourceUnpack |
Примеры использования
data SourceStrictness Исходный код
Степень строгости поля, как она была записана в исходном коде. Например, в следующем типе данных:
data E = ExampleConstructor Int ~Int !Int
Поля ExampleConstructor имеют соответственно NoSourceStrictness, SourceLazy, и SourceStrict.
С момента: base-4.9.0.0
Конструкторы
| NoSourceStrictness | |
| SourceLazy | |
| SourceStrict |
Примеры
| Bounded SourceStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics | |
| Enum SourceStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыsucc :: SourceStrictness -> SourceStrictness Источник pred :: SourceStrictness -> SourceStrictness Источник toEnum :: Int -> SourceStrictness Источник fromEnum :: SourceStrictness -> Int Источник enumFrom :: SourceStrictness -> [SourceStrictness] Источник enumFromThen :: SourceStrictness -> SourceStrictness -> [SourceStrictness] Источник enumFromTo :: SourceStrictness -> SourceStrictness -> [SourceStrictness] Источник enumFromThenTo :: SourceStrictness -> SourceStrictness -> SourceStrictness -> [SourceStrictness] Источник | |
| Eq SourceStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методы(==) :: SourceStrictness -> SourceStrictness -> Bool Источник (/=) :: SourceStrictness -> SourceStrictness -> Bool Источник | |
| Data SourceStrictness | С момента: base-4.9.0.0 |
data DecidedStrictness Исходный код
Степень строгости, которую GHC определяет для поля во время компиляции. В то время как существует девять различных комбинаций SourceUnpackedness и SourceStrictness, в конечном счете, строгость, которую определяет GHC, будет являться одной из ленивой, строгой или упакованной. Решение GHC зависит как от того, что пользователь написал в исходном коде, так и от флагов GHC. Например, рассмотрим этот тип данных:
data E = ExampleConstructor {-# UNPACK #-} !Int !Int Int
- Если компилировать без оптимизации или других расширений языка, то поля
ExampleConstructorбудут иметьDecidedStrict,DecidedStrict, иDecidedLazy, соответственно. - Если компилировать с включённым
-XStrictData, то поля будут иметьDecidedStrict,DecidedStrict, иDecidedStrict, соответственно. - Если компилировать с включённым
-O2, то поля будут иметьDecidedUnpack,DecidedStrict, иDecidedLazy, соответственно.
С момента: base-4.9.0.0
Конструкторы
| DecidedLazy | |
| DecidedStrict | |
| DecidedUnpack |
Примеры использования
| Bounded DecidedStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics | |
| Enum DecidedStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методыsucc :: DecidedStrictness -> DecidedStrictness Источник pred :: DecidedStrictness -> DecidedStrictness Источник toEnum :: Int -> DecidedStrictness Источник fromEnum :: DecidedStrictness -> Int Источник enumFrom :: DecidedStrictness -> [DecidedStrictness] Источник enumFromThen :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] Источник enumFromTo :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] Источник enumFromThenTo :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness] Источник | |
| Eq DecidedStrictness | С момента: base-4.9.0.0 |
Определено в GHC.Generics Методы(==) :: DecidedStrictness -> DecidedStrictness -> Bool Источник (/=) :: DecidedStrictness -> DecidedStrictness -> Bool Источник | |
| Data DecidedStrictness | С момента: base-4.9.0.0 |
data Meta Исходный код
Тип данных для представления метаданных, связанных с типом данных (MetaData), конструктором (MetaCons), или селектором поля (MetaSel).
- В
MetaData n m p nt,n— это имя типа данных,m— модуль, в котором определён тип данных,p— пакет, в котором определён тип данных, аnt—'True, если тип данных являетсяnewtype. - В
MetaCons n f s,n— это имя конструктора,f— его приоритет, аs—'True, если конструктор содержит селекторы записей. - В
MetaSel mn su ss ds, если поле использует синтаксис записей, тоmn— этоJustимя записи. В противном случае,mn— этоNothing.suиss— это аннотации разворачиваемости и жёсткости поля, аds— это жёсткость, которую GHC выводит для поля.
С: base-4.9.0.0
Краткое описание конструкторов
| MetaData Symbol Symbol Symbol Bool | |
| MetaCons Symbol FixityI Bool | |
| MetaSel (Maybe Symbol) SourceUnpackedness SourceStrictness DecidedStrictness |
Примеры реализации
| (KnownSymbol n, SingI f, SingI r) => Конструктор ('MetaCons n f r :: Meta) | С: base-4.9.0.0 |
Определено в GHC.Generics МетодыconName :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> [Символ] Исходный код conFixity :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> Приоритет Исходный код conIsRecord :: forall k t (f0 :: k -> Тип) (a :: k). t ('MetaCons n f r) f0 a -> Булево Исходный код | |
| (KnownSymbol n, KnownSymbol m, KnownSymbol p, SingI nt) => Тип данных ('MetaData n m p nt :: Meta) | С: base-4.9.0.0 |
Определено в GHC.Generics МетодыdatatypeName :: forall k t (f :: k -> Тип) (a :: k). t ('MetaData n m p nt) f a -> [Символ] Исходный код moduleName :: forall k t (f :: k -> Тип) (a :: k). t ('MetaData n m p nt) f a -> [Символ] Исходный код packageName :: forall k t (f :: k -> Тип) (a :: k). t ('MetaData n m p nt) f a -> [Символ] Исходный код isNewtype :: forall k t (f :: k -> Тип) (a :: k). t ('MetaData n m p nt) f a -> Булево Исходный код | |
| (SingI mn, SingI su, SingI ss, SingI ds) => Селектор ('MetaSel mn su ss ds :: Meta) | С: base-4.9.0.0 |
Определено в GHC.Generics МетодыselName :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> [Символ] Исходный код selSourceUnpackedness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> SourceUnpackedness Исходный код selSourceStrictness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> SourceStrictness Исходный код selDecidedStrictness :: forall k t (f :: k -> Тип) (a :: k). t ('MetaSel mn su ss ds) f a -> DecidedStrictness Исходный код | |
Обобщённые классы типов
class Generic a where Исходный код
Представления типов вида *. Этот класс можно вывести в GHC с флагом DeriveGeneric.
Пример реализации класса Generic должен удовлетворять следующим законам:
from . to ≡ id to . from ≡ id
Методы
from :: a -> Rep a x Исходный код
Преобразование из типа данных в его представление
to :: Rep a x -> a Исходный код
Преобразование из представления в тип данных
Экземпляры
| Generic Bool | С версии: base-4.6.0.0 |
| Generic Ordering | С версии: base-4.6.0.0 |
| Generic () | С версии: base-4.6.0.0 |
| Generic DecidedStrictness | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep DecidedStrictness :: Type -> Type Источник Методыfrom :: DecidedStrictness -> Rep DecidedStrictness x Источник to :: Rep DecidedStrictness x -> DecidedStrictness Источник | |
| Generic SourceStrictness | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep SourceStrictness :: Type -> Type Источник Методыfrom :: SourceStrictness -> Rep SourceStrictness x Источник to :: Rep SourceStrictness x -> SourceStrictness Источник | |
| Generic SourceUnpackedness | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep SourceUnpackedness :: Type -> Type Источник Методыfrom :: SourceUnpackedness -> Rep SourceUnpackedness x Источник to :: Rep SourceUnpackedness x -> SourceUnpackedness Источник | |
| Generic Associativity | С версии: base-4.7.0.0 |
| Generic (Сумма a) | С момента: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep (Сумма a) :: Тип -> Тип Исходный код Методыfrom :: Сумма a -> Rep (Сумма a) x Исходный код to :: Rep (Сумма a) x -> Сумма a Исходный код | |
| Generic (Endo a) | С момента: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep (Endo a) :: Тип -> Тип Исходный код | |
| Generic (Dual a) | С момента: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep (Dual a) :: Тип -> Тип Исходный код | |
| Generic (Last a) | С момента: base-4.7.0.0 |
Определено в Data.Monoid Связанные типыtype Rep (Last a) :: Тип -> Тип Исходный код | |
| Generic (First a) | С момента: base-4.7.0.0 |
Определено в Data.Monoid Связанные типыtype Rep (First a) :: Тип -> Тип Исходный код Методыfrom :: First a -> Rep (First a) x Исходный код to :: Rep (First a) x -> First a Исходный код | |
| Generic (Identity a) | С момента: base-4.8.0.0 |
Определено в Data.Functor.Identity Связанные типыtype Rep (Identity a) :: Тип -> Тип Исходный код Методыfrom :: Identity a -> Rep (Identity a) x Исходный код to :: Rep (Identity a) x -> Identity a Исходный код | |
| Generic (ZipList a) | С момента: base-4.7.0.0 |
Определено в Control.Applicative Связанные типыtype Rep (ZipList a) :: Тип -> Тип Исходный код Методыfrom :: ZipList a -> Rep (ZipList a) x Исходный код to :: Rep (ZipList a) x -> ZipList a Исходный код | |
| Generic (Option a) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep (Option a) :: Тип -> Тип Исходный код Методыfrom :: Option a -> Rep (Option a) x Исходный код to :: Rep (Option a) x -> Option a Исходный код | |
| Generic (WrappedMonoid m) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep (WrappedMonoid m) :: Тип -> Тип Исходный код Методыfrom :: WrappedMonoid m -> Rep (WrappedMonoid m) x Исходный код to :: Rep (WrappedMonoid m) x -> WrappedMonoid m Исходный код | |
| Generic (Last a) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep (Last a) :: Тип -> Тип Исходный код | |
| Generic (First a) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep (First a) :: Тип -> Тип Исходный код Методыfrom :: First a -> Rep (First a) x Исходный код to :: Rep (First a) x -> First a Исходный код | |
| Generic (Max a) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep (Max a) :: Тип -> Тип Исходный код | |
| Generic (Min a) | С момента: base-4.9.0.0 |
| Generic (WrappedMonad m a) | Since: base-4.7.0.0 |
Defined in Control.Applicative Связанные типыtype Rep (WrappedMonad m a) :: Type -> Type Source Методыfrom :: WrappedMonad m a -> Rep (WrappedMonad m a) x Source to :: Rep (WrappedMonad m a) x -> WrappedMonad m a Source | |
| Generic (Arg a b) | Since: base-4.9.0.0 |
| Generic (Rec1 f p) | Since: base-4.7.0.0 |
| Generic (URec Word p) | Since: base-4.9.0.0 |
| Generic (URec Int p) | Since: base-4.9.0.0 |
| Generic (URec Float p) | |
Определено в Data.Functor.Const Связанные типытип Rep (Const a b) :: Тип -> Тип Исходный код Методыfrom :: Const a b -> Rep (Const a b) x Исходный код to :: Rep (Const a b) x -> Const a b Исходный код | |
| Generic (Kleisli m a b) | С момента: base-4.14.0.0 |
Определено в Control.Arrow Связанные типытип Rep (Kleisli m a b) :: Тип -> Тип Исходный код Методыfrom :: Kleisli m a b -> Rep (Kleisli m a b) x Исходный код to :: Rep (Kleisli m a b) x -> Kleisli m a b Исходный код | |
| Generic (WrappedArrow a b c) | С момента: base-4.7.0.0 |
Определено в Control.Applicative Связанные типытип Rep (WrappedArrow a b c) :: Тип -> Тип Исходный код Методыfrom :: WrappedArrow a b c -> Rep (WrappedArrow a b c) x Исходный код to :: Rep (WrappedArrow a b c) x -> WrappedArrow a b c Исходный код | |
| Generic (K1 i c p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типытип Rep (K1 i c p) :: Тип -> Тип Исходный код Методыfrom :: K1 i c p -> Rep (K1 i c p) x Исходный код to :: Rep (K1 i c p) x -> K1 i c p Исходный код | |
| Generic ((f :+: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типытип Rep ((f :+: g) p) :: Тип -> Тип Исходный код Методыfrom :: (f :+: g) p -> Rep ((f :+: g) p) x Исходный код to :: Rep ((f :+: g) p) x -> (f :+: g) p Исходный код | |
| Generic ((f :*: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типытип Rep ((f :*: g) p) :: Тип -> Тип Исходный код Методыfrom :: (f :*: g) p -> Rep ((f :*: g) p) x Исходный код to :: Rep ((f :*: g) p) x -> (f :*: g) p Исходный код | |
| Generic (a, b, c, d) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (a, b, c, d) :: Тип -> Тип Исходный код Методыfrom :: (a, b, c, d) -> Rep (a, b, c, d) x Исходный код to :: Rep (a, b, c, d) x -> (a, b, c, d) Исходный код | |
| Generic (Sum f g a) | С момента: base-4.9.0.0 |
Определено в Data.Functor.Sum Связанные типыtype Rep (Sum f g a) :: Тип -> Тип Исходный код Методыfrom :: Sum f g a -> Rep (Sum f g a) x Исходный код to :: Rep (Sum f g a) x -> Sum f g a Исходный код | |
| Generic (Product f g a) | С момента: base-4.9.0.0 |
Определено в Data.Functor.Product Связанные типыtype Rep (Product f g a) :: Тип -> Тип Исходный код Методыfrom :: Product f g a -> Rep (Product f g a) x Исходный код to :: Rep (Product f g a) x -> Product f g a Исходный код | |
| Generic (M1 i c f p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (M1 i c f p) :: Тип -> Тип Исходный код Методыfrom :: M1 i c f p -> Rep (M1 i c f p) x Исходный код to :: Rep (M1 i c f p) x -> M1 i c f p Исходный код | |
| Generic ((f :.: g) p) | С момента: base-4.7.0.0 |
Определено в GHC.Generics Связанные типыtype Rep ((f :.: g) p) :: Тип -> Тип Исходный код Методыfrom :: (f :.: g) p -> Rep ((f :.: g) p) x Исходный код to :: Rep ((f :.: g) p) x -> (f :.: g) p Исходный код | |
| Generic (a, b, c, d, e) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типыtype Rep (a, b, c, d, e) :: Тип -> Тип Исходный код Методыfrom :: (a, b, c, d, e) -> Rep (a, b, c, d, e) x Исходный код to :: Rep (a, b, c, d, e) x -> (a, b, c, d, e) Исходный код | |
| Generic (Compose f g a) | С момента: base-4.9.0.0 |
Определено в Data.Functor.Compose Связанные типытип Rep (Compose f g a) :: Тип -> Тип Исходный код Методыfrom :: Compose f g a -> Rep (Compose f g a) x Исходный код to :: Rep (Compose f g a) x -> Compose f g a Исходный код | |
| Generic (a, b, c, d, e, f) | С версии: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep (a, b, c, d, e, f) :: Тип -> Тип Исходный код Методыfrom :: (a, b, c, d, e, f) -> Rep (a, b, c, d, e, f) x Исходный код to :: Rep (a, b, c, d, e, f) x -> (a, b, c, d, e, f) Исходный код | |
| Generic (a, b, c, d, e, f, g) | С версии: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep (a, b, c, d, e, f, g) :: Тип -> Тип Исходный код Методыfrom :: (a, b, c, d, e, f, g) -> Rep (a, b, c, d, e, f, g) x Исходный код to :: Rep (a, b, c, d, e, f, g) x -> (a, b, c, d, e, f, g) Исходный код | |
класс Generic1 (f :: k -> Тип) где Исходный код
Типы, представленные по типу * -> * (или по типу k -> *, когда PolyKinds включен). Этот класс можно вывести в GHC с флагом DeriveGeneric.
Экземпляр Generic1 должен удовлетворять следующим законам:
from1 . to1 ≡ id to1 . from1 ≡ id
Методы
from1 :: f a -> Rep1 f a Исходный код
Преобразование из типа данных в его представление
to1 :: Rep1 f a -> f a Исходный код
Преобразование из представления в тип данных
Экземпляры
| Generic1 (V1 :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (U1 :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (Proxy :: k -> Type) | С версии: base-4.6.0.0 |
| Generic1 (Rec1 f :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Word :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Int :: k -> Type) | С версии: base-4.9.0.0 |
| Generic1 (URec Float :: k -> Type) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (URec Float) :: k -> Тип Исходный код | |
| Generic1 (URec Double :: k -> Тип) | С: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (URec Double) :: k -> Тип Исходный код | |
| Generic1 (URec Char :: k -> Тип) | С: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (URec Char) :: k -> Тип Исходный код | |
| Generic1 (URec (Ptr ()) :: k -> Тип) | С: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (URec (Ptr ())) :: k -> Тип Исходный код | |
| Generic1 (Alt f :: k -> Тип) | С: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep1 (Alt f) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). Alt f a -> Rep1 (Alt f) a Исходный код to1 :: forall (a :: k0). Rep1 (Alt f) a -> Alt f a Исходный код | |
| Generic1 (Ap f :: k -> Тип) | С: base-4.12.0.0 |
Определено в Data.Monoid Связанные типыtype Rep1 (Ap f) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). Ap f a -> Rep1 (Ap f) a Исходный код to1 :: forall (a :: k0). Rep1 (Ap f) a -> Ap f a Исходный код | |
| Generic1 (Const a :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (K1 i c :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (f :+: g :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (f :*: g :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (Sum f g :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (Product f g :: k -> Type) | Since: base-4.9.0.0 |
| Generic1 (M1 i c f :: k -> Type) | Since: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (M1 i c f) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). M1 i c f a -> Rep1 (M1 i c f) a Исходный код to1 :: forall (a :: k0). Rep1 (M1 i c f) a -> M1 i c f a Исходный код | |
| Functor f => Generic1 (f :.: g :: k -> Тип) | С момента: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 (f :.: g) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). (f :.: g) a -> Rep1 (f :.: g) a Исходный код to1 :: forall (a :: k0). Rep1 (f :.: g) a -> (f :.: g) a Исходный код | |
| Functor f => Generic1 (Compose f g :: k -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Functor.Compose Связанные типыtype Rep1 (Compose f g) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). Compose f g a -> Rep1 (Compose f g) a Исходный код to1 :: forall (a :: k0). Rep1 (Compose f g) a -> Compose f g a Исходный код | |
| Generic1 [] | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 [] :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). [a] -> Rep1 [] a Исходный код to1 :: forall (a :: k). Rep1 [] a -> [a] Исходный код | |
| Generic1 Maybe | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 Maybe :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). Maybe a -> Rep1 Maybe a Исходный код to1 :: forall (a :: k). Rep1 Maybe a -> Maybe a Исходный код | |
| Generic1 Par1 | С момента: base-4.9.0.0 |
Определено в GHC.Generics Связанные типыtype Rep1 Par1 :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). Par1 a -> Rep1 Par1 a Исходный код to1 :: forall (a :: k). Rep1 Par1 a -> Par1 a Исходный код | |
| Generic1 NonEmpty | С момента: base-4.6.0.0 |
Определено в Data.Monoid Связанные типыtype Rep1 First :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). First a -> Rep1 First a Исходный код to1 :: forall (a :: k). Rep1 First a -> First a Исходный код | |
| Generic1 Identity | С момента: base-4.8.0.0 |
Определено в Data.Functor.Identity Связанные типыtype Rep1 Identity :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). Identity a -> Rep1 Identity a Исходный код to1 :: forall (a :: k). Rep1 Identity a -> Identity a Исходный код | |
| Generic1 ZipList | С момента: base-4.7.0.0 |
Определено в Control.Applicative Связанные типыtype Rep1 ZipList :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). ZipList a -> Rep1 ZipList a Исходный код to1 :: forall (a :: k). Rep1 ZipList a -> ZipList a Исходный код | |
| Generic1 Option | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep1 Option :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). Option a -> Rep1 Option a Исходный код to1 :: forall (a :: k). Rep1 Option a -> Option a Исходный код | |
| Generic1 WrappedMonoid | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep1 WrappedMonoid :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). WrappedMonoid a -> Rep1 WrappedMonoid a Исходный код to1 :: forall (a :: k). Rep1 WrappedMonoid a -> WrappedMonoid a Исходный код | |
| Generic1 Last | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типыtype Rep1 Last :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). Last a -> Rep1 Last a Исходный код to1 :: forall (a :: k). Rep1 Last a -> Last a Исходный код | |
| Generic1 First | С момента: base-4.9.0.0 |
Определено в Control.Applicative Связанные типытип Rep1 (WrappedMonad m) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). WrappedMonad m a -> Rep1 (WrappedMonad m) a Исходный код to1 :: forall (a :: k). Rep1 (WrappedMonad m) a -> WrappedMonad m a Исходный код | |
| Generic1 (Arg a :: Тип -> Тип) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup Связанные типытип Rep1 (Arg a) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). Arg a a0 -> Rep1 (Arg a) a0 Исходный код to1 :: forall (a0 :: k). Rep1 (Arg a) a0 -> Arg a a0 Исходный код | |
| Generic1 ((,,) a b :: Тип -> Тип) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep1 ((,,) a b) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). (a, b, a0) -> Rep1 ((,,) a b) a0 Исходный код to1 :: forall (a0 :: k). Rep1 ((,,) a b) a0 -> (a, b, a0) Исходный код | |
| Generic1 (Kleisli m a :: Тип -> Тип) | С момента: base-4.14.0.0 |
Определено в Control.Arrow Связанные типытип Rep1 (Kleisli m a) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). Kleisli m a a0 -> Rep1 (Kleisli m a) a0 Исходный код to1 :: forall (a0 :: k). Rep1 (Kleisli m a) a0 -> Kleisli m a a0 Исходный код | |
| Generic1 (WrappedArrow a b :: Тип -> Тип) | С момента: base-4.7.0.0 |
Определено в Control.Applicative Связанные типытип Rep1 (WrappedArrow a b) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). WrappedArrow a b a0 -> Rep1 (WrappedArrow a b) a0 Исходный код to1 :: forall (a0 :: k). Rep1 (WrappedArrow a b) a0 -> WrappedArrow a b a0 Исходный код | |
| Generic1 ((,,,) a b c :: Тип -> Тип) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep1 ((,,,) a b c) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). (a, b, c, a0) -> Rep1 ((,,,) a b c) a0 Исходный код to1 :: forall (a0 :: k). Rep1 ((,,,) a b c) a0 -> (a, b, c, a0) Исходный код | |
| Generic1 ((,,,,) a b c d :: Тип -> Тип) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep1 ((,,,,) a b c d) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). (a, b, c, d, a0) -> Rep1 ((,,,,) a b c d) a0 Исходный код to1 :: forall (a0 :: k). Rep1 ((,,,,) a b c d) a0 -> (a, b, c, d, a0) Исходный код | |
| Generic1 ((,,,,,) a b c d e :: Тип -> Тип) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep1 ((,,,,,) a b c d e) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). (a, b, c, d, e, a0) -> Rep1 ((,,,,,) a b c d e) a0 Исходный код to1 :: forall (a0 :: k). Rep1 ((,,,,,) a b c d e) a0 -> (a, b, c, d, e, a0) Исходный код | |
| Generic1 ((,,,,,,) a b c d e f :: Тип -> Тип) | С момента: base-4.6.0.0 |
Определено в GHC.Generics Связанные типытип Rep1 ((,,,,,,) a b c d e f) :: k -> Тип Исходный код Методыfrom1 :: forall (a0 :: k). (a, b, c, d, e, f, a0) -> Rep1 ((,,,,,,) a b c d e f) a0 Исходный код to1 :: forall (a0 :: k). Rep1 ((,,,,,,) a b c d e f) a0 -> (a, b, c, d, e, f, a0) Исходный код | |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/GHC-Generics.html