Movatterモバイル変換


[0]ホーム

URL:


{-# OPTIONS_GHC -Wno-noncanonical-monoid-instances #-}{-# LANGUAGE CPP                        #-}{-# LANGUAGE DataKinds                  #-}{-# LANGUAGE DeriveFunctor              #-}{-# LANGUAGE DeriveGeneric              #-}{-# LANGUAGE EmptyDataDeriving          #-}{-# LANGUAGE FlexibleContexts           #-}{-# LANGUAGE FlexibleInstances          #-}{-# LANGUAGE GADTs                      #-}{-# LANGUAGE GeneralizedNewtypeDeriving #-}{-# LANGUAGE InstanceSigs               #-}{-# LANGUAGE MagicHash                  #-}{-# LANGUAGE NoImplicitPrelude          #-}{-# LANGUAGE PolyKinds                  #-}{-# LANGUAGE ScopedTypeVariables        #-}{-# LANGUAGE StandaloneDeriving         #-}{-# LANGUAGE StandaloneKindSignatures   #-}{-# LANGUAGE Trustworthy                #-}{-# LANGUAGE TypeApplications           #-}{-# LANGUAGE TypeFamilies               #-}{-# LANGUAGE TypeOperators              #-}{-# LANGUAGE UndecidableInstances       #-}------------------------------------------------------------------------------- |-- Module      :  GHC.Generics-- Copyright   :  (c) Universiteit Utrecht 2010-2011, University of Oxford 2012-2014-- License     :  see libraries/base/LICENSE---- Maintainer  :  libraries@haskell.org-- Stability   :  internal-- Portability :  non-portable---- @since 4.6.0.0---- If you're using @GHC.Generics@, you should consider using the-- <http://hackage.haskell.org/package/generic-deriving> package, which-- contains many useful generic functions.moduleGHC.Generics(-- * Introduction---- |---- Datatype-generic functions are based on the idea of converting values of-- a datatype @T@ into corresponding values of a (nearly) isomorphic type @'Rep' T@.-- The type @'Rep' T@ is-- built from a limited set of type constructors, all provided by this module. A-- datatype-generic function is then an overloaded function with instances-- for most of these type constructors, together with a wrapper that performs-- the mapping between @T@ and @'Rep' T@. By using this technique, we merely need-- a few generic instances in order to implement functionality that works for any-- representable type.---- Representable types are collected in the 'Generic' class, which defines the-- associated type 'Rep' as well as conversion functions 'from' and 'to'.-- Typically, you will not define 'Generic' instances by hand, but have the compiler-- derive them for you.-- ** Representing datatypes---- |---- The key to defining your own datatype-generic functions is to understand how to-- represent datatypes using the given set of type constructors.---- Let us look at an example first:---- @-- data Tree a = Leaf a | Node (Tree a) (Tree a)--   deriving 'Generic'-- @---- The above declaration (which requires the language pragma @DeriveGeneric@)-- causes the following representation to be generated:---- @-- 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))))--   ...-- @---- /Hint:/ You can obtain information about the code being generated from GHC by passing-- the @-ddump-deriv@ flag. In GHCi, you can expand a type family such as 'Rep' using-- the @:kind!@ command.---- This is a lot of information! However, most of it is actually merely meta-information-- that makes names of datatypes and constructors and more available on the type level.---- Here is a reduced representation for @Tree@ with nearly all meta-information removed,-- for now keeping only the most essential aspects:---- @-- instance 'Generic' (Tree a) where--   type 'Rep' (Tree a) =--     'Rec0' a--     ':+:'--     ('Rec0' (Tree a) ':*:' 'Rec0' (Tree a))-- @---- The @Tree@ datatype has two constructors. The representation of individual constructors-- is combined using the binary type constructor ':+:'.---- The first constructor consists of a single field, which is the parameter @a@. This is-- represented as @'Rec0' a@.---- The second constructor consists of two fields. Each is a recursive field of type @Tree a@,-- represented as @'Rec0' (Tree a)@. Representations of individual fields are combined using-- the binary type constructor ':*:'.---- Now let us explain the additional tags being used in the complete representation:----    * The @'S1' ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness--      'DecidedLazy)@ tag indicates several things. The @'Nothing@ indicates--      that there is no record field selector associated with this field of--      the constructor (if there were, it would have been marked @'Just--      \"recordName\"@ instead). The other types contain meta-information on--      the field's strictness:----      * There is no @{\-\# UNPACK \#-\}@ or @{\-\# NOUNPACK \#-\}@ annotation--        in the source, so it is tagged with @'NoSourceUnpackedness@.----      * There is no strictness (@!@) or laziness (@~@) annotation in the--        source, so it is tagged with @'NoSourceStrictness@.----      * The compiler infers that the field is lazy, so it is tagged with--        @'DecidedLazy@. Bear in mind that what the compiler decides may be--        quite different from what is written in the source. See--        'DecidedStrictness' for a more detailed explanation.----      The @'MetaSel@ type is also an instance of the type class 'Selector',--      which can be used to obtain information about the field at the value--      level.----    * The @'C1' ('MetaCons \"Leaf\" 'PrefixI 'False)@ and--      @'C1' ('MetaCons \"Node\" 'PrefixI 'False)@ invocations indicate that the enclosed part is--      the representation of the first and second constructor of datatype @Tree@, respectively.--      Here, the meta-information regarding constructor names, fixity and whether--      it has named fields or not is encoded at the type level. The @'MetaCons@--      type is also an instance of the type class 'Constructor'. This type class can be used--      to obtain information about the constructor at the value level.----    * The @'D1' ('MetaData \"Tree\" \"Main\" \"package-name\" 'False)@ tag--      indicates that the enclosed part is the representation of the--      datatype @Tree@. Again, the meta-information is encoded at the type level.--      The @'MetaData@ type is an instance of class 'Datatype', which--      can be used to obtain the name of a datatype, the module it has been--      defined in, the package it is located under, and whether it has been--      defined using @data@ or @newtype@ at the value level.-- ** Derived and fundamental representation types---- |---- There are many datatype-generic functions that do not distinguish between positions that-- are parameters or positions that are recursive calls. There are also many datatype-generic-- functions that do not care about the names of datatypes and constructors at all. To keep-- the number of cases to consider in generic functions in such a situation to a minimum,-- it turns out that many of the type constructors introduced above are actually synonyms,-- defining them to be variants of a smaller set of constructors.-- *** Individual fields of constructors: 'K1'---- |---- The type constructor 'Rec0' is a variant of 'K1':---- @-- type 'Rec0' = 'K1' 'R'-- @---- Here, 'R' is a type-level proxy that does not have any associated values.---- There used to be another variant of 'K1' (namely @Par0@), but it has since-- been deprecated.-- *** Meta information: 'M1'---- |---- The type constructors 'S1', 'C1' and 'D1' are all variants of 'M1':---- @-- type 'S1' = 'M1' 'S'-- type 'C1' = 'M1' 'C'-- type 'D1' = 'M1' 'D'-- @---- The types 'S', 'C' and 'D' are once again type-level proxies, just used to create-- several variants of 'M1'.-- *** Additional generic representation type constructors---- |---- Next to 'K1', 'M1', ':+:' and ':*:' there are a few more type constructors that occur-- in the representations of other datatypes.-- **** Empty datatypes: 'V1'---- |---- For empty datatypes, 'V1' is used as a representation. For example,---- @-- data Empty deriving 'Generic'-- @---- yields---- @-- instance 'Generic' Empty where--   type 'Rep' Empty =--     'D1' ('MetaData \"Empty\" \"Main\" \"package-name\" 'False) 'V1'-- @-- **** Constructors without fields: 'U1'---- |---- If a constructor has no arguments, then 'U1' is used as its representation. For example-- the representation of 'Bool' is---- @-- 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')-- @-- *** Representation of types with many constructors or many fields---- |---- As ':+:' and ':*:' are just binary operators, one might ask what happens if the-- datatype has more than two constructors, or a constructor with more than two-- fields. The answer is simple: the operators are used several times, to combine-- all the constructors and fields as needed. However, users /should not rely on-- a specific nesting strategy/ for ':+:' and ':*:' being used. The compiler is-- free to choose any nesting it prefers. (In practice, the current implementation-- tries to produce a more-or-less balanced nesting, so that the traversal of-- the structure of the datatype from the root to a particular component can be-- performed in logarithmic rather than linear time.)-- ** Defining datatype-generic functions---- |---- A datatype-generic function comprises two parts:----    1. /Generic instances/ for the function, implementing it for most of the representation--       type constructors introduced above.----    2. A /wrapper/ that for any datatype that is in `Generic`, performs the conversion--       between the original value and its `Rep`-based representation and then invokes the--       generic instances.---- As an example, let us look at a function @encode@ that produces a naive, but lossless-- bit encoding of values of various datatypes. So we are aiming to define a function---- @-- encode :: 'Generic' a => a -> [Bool]-- @---- where we use 'Bool' as our datatype for bits.---- For part 1, we define a class @Encode'@. Perhaps surprisingly, this class is parameterized-- over a type constructor @f@ of kind @* -> *@. This is a technicality: all the representation-- type constructors operate with kind @* -> *@ as base kind. But the type argument is never-- being used. This may be changed at some point in the future. The class has a single method,-- and we use the type we want our final function to have, but we replace the occurrences of-- the generic type argument @a@ with @f p@ (where the @p@ is any argument; it will not be used).---- > class Encode' f where-- >   encode' :: f p -> [Bool]---- With the goal in mind to make @encode@ work on @Tree@ and other datatypes, we now define-- instances for the representation type constructors 'V1', 'U1', ':+:', ':*:', 'K1', and 'M1'.-- *** Definition of the generic representation types---- |---- In order to be able to do this, we need to know the actual definitions of these types:---- @-- 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-- @---- So, 'U1' is just the unit type, ':+:' is just a binary choice like 'Either',-- ':*:' is a binary pair like the pair constructor @(,)@, and 'K1' is a value-- of a specific type @c@, and 'M1' wraps a value of the generic type argument,-- which in the lifted world is an @f p@ (where we do not care about @p@).-- *** Generic instances---- |---- To deal with the 'V1' case, we use the following code (which requires the pragma @EmptyCase@):---- @-- instance Encode' 'V1' where--   encode' x = case x of { }-- @---- There are no values of type @V1 p@ to pass, so it is impossible for this-- function to be invoked. One can ask why it is useful to define an instance-- for 'V1' at all in this case? Well, an empty type can be used as an argument-- to a non-empty type, and you might still want to encode the resulting type.-- As a somewhat contrived example, consider @[Empty]@, which is not an empty-- type, but contains just the empty list. The 'V1' instance ensures that we-- can call the generic function on such types.---- There is exactly one value of type 'U1', so encoding it requires no-- knowledge, and we can use zero bits:---- @-- instance Encode' 'U1' where--   encode' 'U1' = []-- @---- In the case for ':+:', we produce 'False' or 'True' depending on whether-- the constructor of the value provided is located on the left or on the right:---- @-- instance (Encode' f, Encode' g) => Encode' (f ':+:' g) where--   encode' ('L1' x) = False : encode' x--   encode' ('R1' x) = True  : encode' x-- @---- (Note that this encoding strategy may not be reliable across different-- versions of GHC. Recall that the compiler is free to choose any nesting-- of ':+:' it chooses, so if GHC chooses @(a ':+:' b) ':+:' c@, then the-- encoding for @a@ would be @[False, False]@, @b@ would be @[False, True]@,-- and @c@ would be @[True]@. However, if GHC chooses @a ':+:' (b ':+:' c)@,-- then the encoding for @a@ would be @[False]@, @b@ would be @[True, False]@,-- and @c@ would be @[True, True]@.)---- In the case for ':*:', we append the encodings of the two subcomponents:---- @-- instance (Encode' f, Encode' g) => Encode' (f ':*:' g) where--   encode' (x ':*:' y) = encode' x ++ encode' y-- @---- The case for 'K1' is rather interesting. Here, we call the final function-- @encode@ that we yet have to define, recursively. We will use another type-- class @Encode@ for that function:---- @-- instance (Encode c) => Encode' ('K1' i c) where--   encode' ('K1' x) = encode x-- @---- Note how we can define a uniform instance for 'M1', because we completely-- disregard all meta-information:---- @-- instance (Encode' f) => Encode' ('M1' i t f) where--   encode' ('M1' x) = encode' x-- @---- Unlike in 'K1', the instance for 'M1' refers to @encode'@, not @encode@.-- *** The wrapper and generic default---- |---- We now define class @Encode@ for the actual @encode@ function:---- @-- class Encode a where--   encode :: a -> [Bool]--   default encode :: (Generic a, Encode' (Rep a)) => a -> [Bool]--   encode x = encode' ('from' x)-- @---- The incoming @x@ is converted using 'from', then we dispatch to the-- generic instances using @encode'@. We use this as a default definition-- for @encode@. We need the @default encode@ signature because ordinary-- Haskell default methods must not introduce additional class constraints,-- but our generic default does.---- Defining a particular instance is now as simple as saying---- @-- instance (Encode a) => Encode (Tree a)-- @--#if 0-- /TODO:/ Add usage example?--#endif-- The generic default is being used. In the future, it will hopefully be-- possible to use @deriving Encode@ as well, but GHC does not yet support-- that syntax for this situation.---- Having @Encode@ as a class has the advantage that we can define-- non-generic special cases, which is particularly useful for abstract-- datatypes that have no structural representation. For example, given-- a suitable integer encoding function @encodeInt@, we can define---- @-- instance Encode Int where--   encode = encodeInt-- @-- *** Omitting generic instances---- |---- It is not always required to provide instances for all the generic-- representation types, but omitting instances restricts the set of-- datatypes the functions will work for:----    * If no ':+:' instance is given, the function may still work for--      empty datatypes or datatypes that have a single constructor,--      but will fail on datatypes with more than one constructor.----    * If no ':*:' instance is given, the function may still work for--      datatypes where each constructor has just zero or one field,--      in particular for enumeration types.----    * If no 'K1' instance is given, the function may still work for--      enumeration types, where no constructor has any fields.----    * If no 'V1' instance is given, the function may still work for--      any datatype that is not empty.----    * If no 'U1' instance is given, the function may still work for--      any datatype where each constructor has at least one field.---- An 'M1' instance is always required (but it can just ignore the-- meta-information, as is the case for @encode@ above).#if 0-- *** Using meta-information---- |---- TODO#endif-- ** Generic constructor classes---- |---- Datatype-generic functions as defined above work for a large class-- of datatypes, including parameterized datatypes. (We have used @Tree@-- as our example above, which is of kind @* -> *@.) However, the-- 'Generic' class ranges over types of kind @*@, and therefore, the-- resulting generic functions (such as @encode@) must be parameterized-- by a generic type argument of kind @*@.---- What if we want to define generic classes that range over type-- constructors (such as 'Data.Functor.Functor',-- 'Data.Traversable.Traversable', or 'Data.Foldable.Foldable')?-- *** The 'Generic1' class---- |---- Like 'Generic', there is a class 'Generic1' that defines a-- representation 'Rep1' and conversion functions 'from1' and 'to1',-- only that 'Generic1' ranges over types of kind @* -> *@. (More generally,-- it can range over types of kind @k -> *@, for any kind @k@, if the-- @PolyKinds@ extension is enabled. More on this later.)-- The 'Generic1' class is also derivable.---- The representation 'Rep1' is ever so slightly different from 'Rep'.-- Let us look at @Tree@ as an example again:---- @-- data Tree a = Leaf a | Node (Tree a) (Tree a)--   deriving 'Generic1'-- @---- The above declaration causes the following representation to be generated:---- @-- 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)))--   ...-- @---- The representation reuses 'D1', 'C1', 'S1' (and thereby 'M1') as well-- as ':+:' and ':*:' from 'Rep'. (This reusability is the reason that we-- carry around the dummy type argument for kind-@*@-types, but there are-- already enough different names involved without duplicating each of-- these.)---- What's different is that we now use 'Par1' to refer to the parameter-- (and that parameter, which used to be @a@), is not mentioned explicitly-- by name anywhere; and we use 'Rec1' to refer to a recursive use of @Tree a@.-- *** Representation of @* -> *@ types---- |---- Unlike 'Rec0', the 'Par1' and 'Rec1' type constructors do not-- map to 'K1'. They are defined directly, as follows:---- @-- newtype 'Par1'   p = 'Par1' { 'unPar1' ::   p } -- gives access to parameter p-- newtype 'Rec1' f p = 'Rec1' { 'unRec1' :: f p } -- a wrapper-- @---- In 'Par1', the parameter @p@ is used for the first time, whereas 'Rec1' simply-- wraps an application of @f@ to @p@.---- Note that 'K1' (in the guise of 'Rec0') can still occur in a 'Rep1' representation,-- namely when the datatype has a field that does not mention the parameter.---- The declaration---- @-- data WithInt a = WithInt Int a--   deriving 'Generic1'-- @---- yields---- @-- 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'))-- @---- If the parameter @a@ appears underneath a composition of other type constructors,-- then the representation involves composition, too:---- @-- data Rose a = Fork a [Rose a]-- @---- yields---- @-- 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)))-- @---- where---- @-- newtype (':.:') f g p = 'Comp1' { 'unComp1' :: f (g p) }-- @-- *** Representation of @k -> *@ types---- |---- The 'Generic1' class can be generalized to range over types of kind-- @k -> *@, for any kind @k@. To do so, derive a 'Generic1' instance with the-- @PolyKinds@ extension enabled. For example, the declaration---- @-- data Proxy (a :: k) = Proxy deriving 'Generic1'-- @---- yields a slightly different instance depending on whether @PolyKinds@ is-- enabled. If compiled without @PolyKinds@, then @'Rep1' Proxy :: * -> *@, but-- if compiled with @PolyKinds@, then @'Rep1' Proxy :: k -> *@.-- *** Representation of unlifted types---- |---- If one were to attempt to derive a Generic instance for a datatype with an-- unlifted argument (for example, 'Int#'), one might expect the occurrence of-- the 'Int#' argument to be marked with @'Rec0' 'Int#'@. This won't work,-- though, since 'Int#' is of an unlifted kind, and 'Rec0' expects a type of-- kind @*@.---- One solution would be to represent an occurrence of 'Int#' with 'Rec0 Int'-- instead. With this approach, however, the programmer has no way of knowing-- whether the 'Int' is actually an 'Int#' in disguise.---- Instead of reusing 'Rec0', a separate data family 'URec' is used to mark-- occurrences of common unlifted types:---- @-- 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#'   }-- @---- Several type synonyms are provided for convenience:---- @-- type 'UAddr'   = 'URec' ('Ptr' ())-- type 'UChar'   = 'URec' 'Char'-- type 'UDouble' = 'URec' 'Double'-- type 'UFloat'  = 'URec' 'Float'-- type 'UInt'    = 'URec' 'Int'-- type 'UWord'   = 'URec' 'Word'-- @---- The declaration---- @-- data IntHash = IntHash Int#--   deriving 'Generic'-- @---- yields---- @-- 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'))-- @---- Currently, only the six unlifted types listed above are generated, but this-- may be extended to encompass more unlifted types in the future.#if 0-- *** Limitations---- |---- /TODO/---- /TODO:/ Also clear up confusion about 'Rec0' and 'Rec1' not really indicating recursion.--#endif------------------------------------------------------------------------------- * Generic representation typesV1,U1(..),Par1(..),Rec1(..),K1(..),M1(..),(:+:)(..),(:*:)(..),(:.:)(..)-- ** Unboxed representation types,URec(..),typeUAddr,typeUChar,typeUDouble,typeUFloat,typeUInt,typeUWord-- ** Synonyms for convenience,Rec0,R,D1,C1,S1,D,C,S-- * Meta-information,Datatype(..),Constructor(..),Selector(..),Fixity(..),FixityI(..),Associativity(..),prec,SourceUnpackedness(..),SourceStrictness(..),DecidedStrictness(..),Meta(..)-- * Generic type classes,Generic(..),Generic1(..)-- * Generic wrapper,Generically(..),Generically1(..))where-- We use some base typesimportData.Either(Either(..))importData.Maybe(Maybe(..),fromMaybe)importData.Ord(Down(..))importGHC.Num.Integer(Integer,integerToInt)importGHC.Prim(Addr#,Char#,Double#,Float#,Int#,Word#)importGHC.Ptr(Ptr)importGHC.Types-- Needed for instancesimportGHC.Ix(Ix)importGHC.Base(Alternative(..),Applicative(..),Functor(..),Monad(..),MonadPlus(..),NonEmpty(..),String,coerce,Semigroup(..),Monoid(..),Void)importGHC.Classes(Eq(..),Ord(..))importGHC.Enum(Bounded,Enum)importGHC.Read(Read(..))importGHC.Show(Show(..),showString)importGHC.Stack.Types(SrcLoc(..))importGHC.Tuple(Solo(..))importGHC.Unicode(GeneralCategory(..))importGHC.Fingerprint.Type(Fingerprint(..))-- Needed for metadataimportData.Proxy(Proxy(..))importGHC.TypeLits(KnownSymbol,KnownNat,Nat,symbolVal,natVal)---------------------------------------------------------------------------------- Representation types---------------------------------------------------------------------------------- | Void: used for datatypes without constructorsdataV1(p::k)deriving(V1 p -> V1 p -> Bool(V1 p -> V1 p -> Bool) -> (V1 p -> V1 p -> Bool) -> Eq (V1 p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). V1 p -> V1 p -> Bool$c== :: forall k (p :: k). V1 p -> V1 p -> Bool== :: V1 p -> V1 p -> Bool$c/= :: forall k (p :: k). V1 p -> V1 p -> Bool/= :: V1 p -> V1 p -> BoolEq-- ^ @since 4.9.0.0,Eq (V1 p)Eq (V1 p) =>(V1 p -> V1 p -> Ordering)-> (V1 p -> V1 p -> Bool)-> (V1 p -> V1 p -> Bool)-> (V1 p -> V1 p -> Bool)-> (V1 p -> V1 p -> Bool)-> (V1 p -> V1 p -> V1 p)-> (V1 p -> V1 p -> V1 p)-> Ord (V1 p)V1 p -> V1 p -> BoolV1 p -> V1 p -> OrderingV1 p -> V1 p -> V1 pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (V1 p)forall k (p :: k). V1 p -> V1 p -> Boolforall k (p :: k). V1 p -> V1 p -> Orderingforall k (p :: k). V1 p -> V1 p -> V1 p$ccompare :: forall k (p :: k). V1 p -> V1 p -> Orderingcompare :: V1 p -> V1 p -> Ordering$c< :: forall k (p :: k). V1 p -> V1 p -> Bool< :: V1 p -> V1 p -> Bool$c<= :: forall k (p :: k). V1 p -> V1 p -> Bool<= :: V1 p -> V1 p -> Bool$c> :: forall k (p :: k). V1 p -> V1 p -> Bool> :: V1 p -> V1 p -> Bool$c>= :: forall k (p :: k). V1 p -> V1 p -> Bool>= :: V1 p -> V1 p -> Bool$cmax :: forall k (p :: k). V1 p -> V1 p -> V1 pmax :: V1 p -> V1 p -> V1 p$cmin :: forall k (p :: k). V1 p -> V1 p -> V1 pmin :: V1 p -> V1 p -> V1 pOrd-- ^ @since 4.9.0.0,ReadPrec [V1 p]ReadPrec (V1 p)Int -> ReadS (V1 p)ReadS [V1 p](Int -> ReadS (V1 p))-> ReadS [V1 p]-> ReadPrec (V1 p)-> ReadPrec [V1 p]-> Read (V1 p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall k (p :: k). ReadPrec [V1 p]forall k (p :: k). ReadPrec (V1 p)forall k (p :: k). Int -> ReadS (V1 p)forall k (p :: k). ReadS [V1 p]$creadsPrec :: forall k (p :: k). Int -> ReadS (V1 p)readsPrec :: Int -> ReadS (V1 p)$creadList :: forall k (p :: k). ReadS [V1 p]readList :: ReadS [V1 p]$creadPrec :: forall k (p :: k). ReadPrec (V1 p)readPrec :: ReadPrec (V1 p)$creadListPrec :: forall k (p :: k). ReadPrec [V1 p]readListPrec :: ReadPrec [V1 p]Read-- ^ @since 4.9.0.0,Int -> V1 p -> ShowS[V1 p] -> ShowSV1 p -> String(Int -> V1 p -> ShowS)-> (V1 p -> String) -> ([V1 p] -> ShowS) -> Show (V1 p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> V1 p -> ShowSforall k (p :: k). [V1 p] -> ShowSforall k (p :: k). V1 p -> String$cshowsPrec :: forall k (p :: k). Int -> V1 p -> ShowSshowsPrec :: Int -> V1 p -> ShowS$cshow :: forall k (p :: k). V1 p -> Stringshow :: V1 p -> String$cshowList :: forall k (p :: k). [V1 p] -> ShowSshowList :: [V1 p] -> ShowSShow-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> V1 a -> V1 b)-> (forall a b. a -> V1 b -> V1 a) -> Functor V1forall a b. a -> V1 b -> V1 aforall a b. (a -> b) -> V1 a -> V1 bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> V1 a -> V1 bfmap :: forall a b. (a -> b) -> V1 a -> V1 b$c<$ :: forall a b. a -> V1 b -> V1 a<$ :: forall a b. a -> V1 b -> V1 aFunctor-- ^ @since 4.9.0.0,(forall x. V1 p -> Rep (V1 p) x)-> (forall x. Rep (V1 p) x -> V1 p) -> Generic (V1 p)forall x. V1 p -> Rep (V1 p) xforall x. Rep (V1 p) x -> V1 pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. V1 p -> Rep (V1 p) xforall k (p :: k) x. Rep (V1 p) x -> V1 p$cfrom :: forall k (p :: k) x. V1 p -> Rep (V1 p) xfrom :: forall x. V1 p -> Rep (V1 p) x$cto :: forall k (p :: k) x. Rep (V1 p) x -> V1 pto :: forall x. Rep (V1 p) x -> V1 pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). V1 a -> Rep1 V1 a)-> (forall (a :: k). Rep1 V1 a -> V1 a) -> Generic1 V1forall (a :: k). V1 a -> Rep1 V1 aforall (a :: k). Rep1 V1 a -> V1 aforall k (a :: k). V1 a -> Rep1 V1 aforall k (a :: k). Rep1 V1 a -> V1 aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). V1 a -> Rep1 V1 afrom1 :: forall (a :: k). V1 a -> Rep1 V1 a$cto1 :: forall k (a :: k). Rep1 V1 a -> V1 ato1 :: forall (a :: k). Rep1 V1 a -> V1 aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.12.0.0instanceSemigroup(V1p)whereV1 pv<> :: V1 p -> V1 p -> V1 p<>V1 p_=V1 pv-- | Unit: used for constructors without argumentsdataU1(p::k)=U1deriving((forall x. U1 p -> Rep (U1 p) x)-> (forall x. Rep (U1 p) x -> U1 p) -> Generic (U1 p)forall x. U1 p -> Rep (U1 p) xforall x. Rep (U1 p) x -> U1 pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. U1 p -> Rep (U1 p) xforall k (p :: k) x. Rep (U1 p) x -> U1 p$cfrom :: forall k (p :: k) x. U1 p -> Rep (U1 p) xfrom :: forall x. U1 p -> Rep (U1 p) x$cto :: forall k (p :: k) x. Rep (U1 p) x -> U1 pto :: forall x. Rep (U1 p) x -> U1 pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). U1 a -> Rep1 U1 a)-> (forall (a :: k). Rep1 U1 a -> U1 a) -> Generic1 U1forall (a :: k). U1 a -> Rep1 U1 aforall (a :: k). Rep1 U1 a -> U1 aforall k (a :: k). U1 a -> Rep1 U1 aforall k (a :: k). Rep1 U1 a -> U1 aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). U1 a -> Rep1 U1 afrom1 :: forall (a :: k). U1 a -> Rep1 U1 a$cto1 :: forall k (a :: k). Rep1 U1 a -> U1 ato1 :: forall (a :: k). Rep1 U1 a -> U1 aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceEq(U1p)whereU1 p_== :: U1 p -> U1 p -> Bool==U1 p_=BoolTrue-- | @since 4.7.0.0instanceOrd(U1p)wherecompare :: U1 p -> U1 p -> OrderingcompareU1 p_U1 p_=OrderingEQ-- | @since 4.9.0.0derivinginstanceRead(U1p)-- | @since 4.9.0.0instanceShow(U1p)whereshowsPrec :: Int -> U1 p -> ShowSshowsPrecInt_U1 p_=String -> ShowSshowStringString"U1"-- | @since 4.9.0.0instanceFunctorU1wherefmap :: forall a b. (a -> b) -> U1 a -> U1 bfmapa -> b_U1 a_=U1 bforall k (p :: k). U1 pU1-- | @since 4.9.0.0instanceApplicativeU1wherepure :: forall a. a -> U1 apurea_=U1 aforall k (p :: k). U1 pU1U1 (a -> b)_<*> :: forall a b. U1 (a -> b) -> U1 a -> U1 b<*>U1 a_=U1 bforall k (p :: k). U1 pU1liftA2 :: forall a b c. (a -> b -> c) -> U1 a -> U1 b -> U1 cliftA2a -> b -> c_U1 a_U1 b_=U1 cforall k (p :: k). U1 pU1-- | @since 4.9.0.0instanceAlternativeU1whereempty :: forall a. U1 aempty=U1 aforall k (p :: k). U1 pU1U1 a_<|> :: forall a. U1 a -> U1 a -> U1 a<|>U1 a_=U1 aforall k (p :: k). U1 pU1-- | @since 4.9.0.0instanceMonadU1whereU1 a_>>= :: forall a b. U1 a -> (a -> U1 b) -> U1 b>>=a -> U1 b_=U1 bforall k (p :: k). U1 pU1-- | @since 4.9.0.0instanceMonadPlusU1-- | @since 4.12.0.0instanceSemigroup(U1p)whereU1 p_<> :: U1 p -> U1 p -> U1 p<>U1 p_=U1 pforall k (p :: k). U1 pU1-- | @since 4.12.0.0instanceMonoid(U1p)wheremempty :: U1 pmempty=U1 pforall k (p :: k). U1 pU1-- | Used for marking occurrences of the parameternewtypePar1p=Par1{forall p. Par1 p -> punPar1::p}deriving(Par1 p -> Par1 p -> Bool(Par1 p -> Par1 p -> Bool)-> (Par1 p -> Par1 p -> Bool) -> Eq (Par1 p)forall p. Eq p => Par1 p -> Par1 p -> Boolforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: forall p. Eq p => Par1 p -> Par1 p -> Bool== :: Par1 p -> Par1 p -> Bool$c/= :: forall p. Eq p => Par1 p -> Par1 p -> Bool/= :: Par1 p -> Par1 p -> BoolEq-- ^ @since 4.7.0.0,Eq (Par1 p)Eq (Par1 p) =>(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)-> (Par1 p -> Par1 p -> Par1 p)-> (Par1 p -> Par1 p -> Par1 p)-> Ord (Par1 p)Par1 p -> Par1 p -> BoolPar1 p -> Par1 p -> OrderingPar1 p -> Par1 p -> Par1 pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall p. Ord p => Eq (Par1 p)forall p. Ord p => Par1 p -> Par1 p -> Boolforall p. Ord p => Par1 p -> Par1 p -> Orderingforall p. Ord p => Par1 p -> Par1 p -> Par1 p$ccompare :: forall p. Ord p => Par1 p -> Par1 p -> Orderingcompare :: Par1 p -> Par1 p -> Ordering$c< :: forall p. Ord p => Par1 p -> Par1 p -> Bool< :: Par1 p -> Par1 p -> Bool$c<= :: forall p. Ord p => Par1 p -> Par1 p -> Bool<= :: Par1 p -> Par1 p -> Bool$c> :: forall p. Ord p => Par1 p -> Par1 p -> Bool> :: Par1 p -> Par1 p -> Bool$c>= :: forall p. Ord p => Par1 p -> Par1 p -> Bool>= :: Par1 p -> Par1 p -> Bool$cmax :: forall p. Ord p => Par1 p -> Par1 p -> Par1 pmax :: Par1 p -> Par1 p -> Par1 p$cmin :: forall p. Ord p => Par1 p -> Par1 p -> Par1 pmin :: Par1 p -> Par1 p -> Par1 pOrd-- ^ @since 4.7.0.0,ReadPrec [Par1 p]ReadPrec (Par1 p)Int -> ReadS (Par1 p)ReadS [Par1 p](Int -> ReadS (Par1 p))-> ReadS [Par1 p]-> ReadPrec (Par1 p)-> ReadPrec [Par1 p]-> Read (Par1 p)forall p. Read p => ReadPrec [Par1 p]forall p. Read p => ReadPrec (Par1 p)forall p. Read p => Int -> ReadS (Par1 p)forall p. Read p => ReadS [Par1 p]forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: forall p. Read p => Int -> ReadS (Par1 p)readsPrec :: Int -> ReadS (Par1 p)$creadList :: forall p. Read p => ReadS [Par1 p]readList :: ReadS [Par1 p]$creadPrec :: forall p. Read p => ReadPrec (Par1 p)readPrec :: ReadPrec (Par1 p)$creadListPrec :: forall p. Read p => ReadPrec [Par1 p]readListPrec :: ReadPrec [Par1 p]Read-- ^ @since 4.7.0.0,Int -> Par1 p -> ShowS[Par1 p] -> ShowSPar1 p -> String(Int -> Par1 p -> ShowS)-> (Par1 p -> String) -> ([Par1 p] -> ShowS) -> Show (Par1 p)forall p. Show p => Int -> Par1 p -> ShowSforall p. Show p => [Par1 p] -> ShowSforall p. Show p => Par1 p -> Stringforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: forall p. Show p => Int -> Par1 p -> ShowSshowsPrec :: Int -> Par1 p -> ShowS$cshow :: forall p. Show p => Par1 p -> Stringshow :: Par1 p -> String$cshowList :: forall p. Show p => [Par1 p] -> ShowSshowList :: [Par1 p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> Par1 a -> Par1 b)-> (forall a b. a -> Par1 b -> Par1 a) -> Functor Par1forall a b. a -> Par1 b -> Par1 aforall a b. (a -> b) -> Par1 a -> Par1 bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> Par1 a -> Par1 bfmap :: forall a b. (a -> b) -> Par1 a -> Par1 b$c<$ :: forall a b. a -> Par1 b -> Par1 a<$ :: forall a b. a -> Par1 b -> Par1 aFunctor-- ^ @since 4.9.0.0,(forall x. Par1 p -> Rep (Par1 p) x)-> (forall x. Rep (Par1 p) x -> Par1 p) -> Generic (Par1 p)forall x. Par1 p -> Rep (Par1 p) xforall x. Rep (Par1 p) x -> Par1 pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall p x. Par1 p -> Rep (Par1 p) xforall p x. Rep (Par1 p) x -> Par1 p$cfrom :: forall p x. Par1 p -> Rep (Par1 p) xfrom :: forall x. Par1 p -> Rep (Par1 p) x$cto :: forall p x. Rep (Par1 p) x -> Par1 pto :: forall x. Rep (Par1 p) x -> Par1 pGeneric-- ^ @since 4.7.0.0,(forall a. Par1 a -> Rep1 Par1 a)-> (forall a. Rep1 Par1 a -> Par1 a) -> Generic1 Par1forall a. Par1 a -> Rep1 Par1 aforall a. Rep1 Par1 a -> Par1 aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall a. Par1 a -> Rep1 Par1 afrom1 :: forall a. Par1 a -> Rep1 Par1 a$cto1 :: forall a. Rep1 Par1 a -> Par1 ato1 :: forall a. Rep1 Par1 a -> Par1 aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceApplicativePar1wherepure :: forall a. a -> Par1 apure=a -> Par1 aforall a. a -> Par1 aPar1<*> :: forall a b. Par1 (a -> b) -> Par1 a -> Par1 b(<*>)=Par1 (a -> b) -> Par1 a -> Par1 bforall a b. Coercible a b => a -> bcoerceliftA2 :: forall a b c. (a -> b -> c) -> Par1 a -> Par1 b -> Par1 cliftA2=(a -> b -> c) -> Par1 a -> Par1 b -> Par1 cforall a b. Coercible a b => a -> bcoerce-- | @since 4.9.0.0instanceMonadPar1wherePar1ax>>= :: forall a b. Par1 a -> (a -> Par1 b) -> Par1 b>>=a -> Par1 bf=a -> Par1 bfax-- | @since 4.12.0.0derivinginstanceSemigroupp=>Semigroup(Par1p)-- | @since 4.12.0.0derivinginstanceMonoidp=>Monoid(Par1p)-- | Recursive calls of kind @* -> *@ (or kind @k -> *@, when @PolyKinds@-- is enabled)newtypeRec1(f::k->Type)(p::k)=Rec1{forall k (f :: k -> *) (p :: k). Rec1 f p -> f punRec1::fp}deriving(Rec1 f p -> Rec1 f p -> Bool(Rec1 f p -> Rec1 f p -> Bool)-> (Rec1 f p -> Rec1 f p -> Bool) -> Eq (Rec1 f p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (f :: k -> *) (p :: k).Eq (f p) =>Rec1 f p -> Rec1 f p -> Bool$c== :: forall k (f :: k -> *) (p :: k).Eq (f p) =>Rec1 f p -> Rec1 f p -> Bool== :: Rec1 f p -> Rec1 f p -> Bool$c/= :: forall k (f :: k -> *) (p :: k).Eq (f p) =>Rec1 f p -> Rec1 f p -> Bool/= :: Rec1 f p -> Rec1 f p -> BoolEq-- ^ @since 4.7.0.0,Eq (Rec1 f p)Eq (Rec1 f p) =>(Rec1 f p -> Rec1 f p -> Ordering)-> (Rec1 f p -> Rec1 f p -> Bool)-> (Rec1 f p -> Rec1 f p -> Bool)-> (Rec1 f p -> Rec1 f p -> Bool)-> (Rec1 f p -> Rec1 f p -> Bool)-> (Rec1 f p -> Rec1 f p -> Rec1 f p)-> (Rec1 f p -> Rec1 f p -> Rec1 f p)-> Ord (Rec1 f p)Rec1 f p -> Rec1 f p -> BoolRec1 f p -> Rec1 f p -> OrderingRec1 f p -> Rec1 f p -> Rec1 f pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (f :: k -> *) (p :: k). Ord (f p) => Eq (Rec1 f p)forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Boolforall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Orderingforall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Rec1 f p$ccompare :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Orderingcompare :: Rec1 f p -> Rec1 f p -> Ordering$c< :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Bool< :: Rec1 f p -> Rec1 f p -> Bool$c<= :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Bool<= :: Rec1 f p -> Rec1 f p -> Bool$c> :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Bool> :: Rec1 f p -> Rec1 f p -> Bool$c>= :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Bool>= :: Rec1 f p -> Rec1 f p -> Bool$cmax :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Rec1 f pmax :: Rec1 f p -> Rec1 f p -> Rec1 f p$cmin :: forall k (f :: k -> *) (p :: k).Ord (f p) =>Rec1 f p -> Rec1 f p -> Rec1 f pmin :: Rec1 f p -> Rec1 f p -> Rec1 f pOrd-- ^ @since 4.7.0.0,ReadPrec [Rec1 f p]ReadPrec (Rec1 f p)Int -> ReadS (Rec1 f p)ReadS [Rec1 f p](Int -> ReadS (Rec1 f p))-> ReadS [Rec1 f p]-> ReadPrec (Rec1 f p)-> ReadPrec [Rec1 f p]-> Read (Rec1 f p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [Rec1 f p]forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (Rec1 f p)forall k (f :: k -> *) (p :: k).Read (f p) =>Int -> ReadS (Rec1 f p)forall k (f :: k -> *) (p :: k). Read (f p) => ReadS [Rec1 f p]$creadsPrec :: forall k (f :: k -> *) (p :: k).Read (f p) =>Int -> ReadS (Rec1 f p)readsPrec :: Int -> ReadS (Rec1 f p)$creadList :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadS [Rec1 f p]readList :: ReadS [Rec1 f p]$creadPrec :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec (Rec1 f p)readPrec :: ReadPrec (Rec1 f p)$creadListPrec :: forall k (f :: k -> *) (p :: k). Read (f p) => ReadPrec [Rec1 f p]readListPrec :: ReadPrec [Rec1 f p]Read-- ^ @since 4.7.0.0,Int -> Rec1 f p -> ShowS[Rec1 f p] -> ShowSRec1 f p -> String(Int -> Rec1 f p -> ShowS)-> (Rec1 f p -> String) -> ([Rec1 f p] -> ShowS) -> Show (Rec1 f p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (f :: k -> *) (p :: k).Show (f p) =>Int -> Rec1 f p -> ShowSforall k (f :: k -> *) (p :: k). Show (f p) => [Rec1 f p] -> ShowSforall k (f :: k -> *) (p :: k). Show (f p) => Rec1 f p -> String$cshowsPrec :: forall k (f :: k -> *) (p :: k).Show (f p) =>Int -> Rec1 f p -> ShowSshowsPrec :: Int -> Rec1 f p -> ShowS$cshow :: forall k (f :: k -> *) (p :: k). Show (f p) => Rec1 f p -> Stringshow :: Rec1 f p -> String$cshowList :: forall k (f :: k -> *) (p :: k). Show (f p) => [Rec1 f p] -> ShowSshowList :: [Rec1 f p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> Rec1 f a -> Rec1 f b)-> (forall a b. a -> Rec1 f b -> Rec1 f a) -> Functor (Rec1 f)forall a b. a -> Rec1 f b -> Rec1 f aforall a b. (a -> b) -> Rec1 f a -> Rec1 f bforall (f :: * -> *) a b. Functor f => a -> Rec1 f b -> Rec1 f aforall (f :: * -> *) a b.Functor f =>(a -> b) -> Rec1 f a -> Rec1 f bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall (f :: * -> *) a b.Functor f =>(a -> b) -> Rec1 f a -> Rec1 f bfmap :: forall a b. (a -> b) -> Rec1 f a -> Rec1 f b$c<$ :: forall (f :: * -> *) a b. Functor f => a -> Rec1 f b -> Rec1 f a<$ :: forall a b. a -> Rec1 f b -> Rec1 f aFunctor-- ^ @since 4.9.0.0,(forall x. Rec1 f p -> Rep (Rec1 f p) x)-> (forall x. Rep (Rec1 f p) x -> Rec1 f p) -> Generic (Rec1 f p)forall x. Rec1 f p -> Rep (Rec1 f p) xforall x. Rep (Rec1 f p) x -> Rec1 f pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (f :: k -> *) (p :: k) x. Rec1 f p -> Rep (Rec1 f p) xforall k (f :: k -> *) (p :: k) x. Rep (Rec1 f p) x -> Rec1 f p$cfrom :: forall k (f :: k -> *) (p :: k) x. Rec1 f p -> Rep (Rec1 f p) xfrom :: forall x. Rec1 f p -> Rep (Rec1 f p) x$cto :: forall k (f :: k -> *) (p :: k) x. Rep (Rec1 f p) x -> Rec1 f pto :: forall x. Rep (Rec1 f p) x -> Rec1 f pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) a)-> (forall (a :: k). Rep1 (Rec1 f) a -> Rec1 f a)-> Generic1 (Rec1 f)forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) aforall (a :: k). Rep1 (Rec1 f) a -> Rec1 f aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 fforall k (f :: k -> *) (a :: k). Rec1 f a -> Rep1 (Rec1 f) aforall k (f :: k -> *) (a :: k). Rep1 (Rec1 f) a -> Rec1 f a$cfrom1 :: forall k (f :: k -> *) (a :: k). Rec1 f a -> Rep1 (Rec1 f) afrom1 :: forall (a :: k). Rec1 f a -> Rep1 (Rec1 f) a$cto1 :: forall k (f :: k -> *) (a :: k). Rep1 (Rec1 f) a -> Rec1 f ato1 :: forall (a :: k). Rep1 (Rec1 f) a -> Rec1 f aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.9.0.0derivinginstanceApplicativef=>Applicative(Rec1f)-- | @since 4.9.0.0derivinginstanceAlternativef=>Alternative(Rec1f)-- | @since 4.9.0.0instanceMonadf=>Monad(Rec1f)whereRec1f ax>>= :: forall a b. Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b>>=a -> Rec1 f bf=f b -> Rec1 f bforall k (f :: k -> *) (p :: k). f p -> Rec1 f pRec1(f axf a -> (a -> f b) -> f bforall a b. f a -> (a -> f b) -> f bforall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b>>=\aa->Rec1 f b -> f bforall k (f :: k -> *) (p :: k). Rec1 f p -> f punRec1(a -> Rec1 f bfaa))-- | @since 4.9.0.0derivinginstanceMonadPlusf=>MonadPlus(Rec1f)-- | @since 4.12.0.0derivinginstanceSemigroup(fp)=>Semigroup(Rec1fp)-- | @since 4.12.0.0derivinginstanceMonoid(fp)=>Monoid(Rec1fp)-- | Constants, additional parameters and recursion of kind @*@newtypeK1(i::Type)c(p::k)=K1{forall k i c (p :: k). K1 i c p -> cunK1::c}deriving(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) -> Eq (K1 i c p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool$c== :: forall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool== :: K1 i c p -> K1 i c p -> Bool$c/= :: forall i c k (p :: k). Eq c => K1 i c p -> K1 i c p -> Bool/= :: K1 i c p -> K1 i c p -> BoolEq-- ^ @since 4.7.0.0,Eq (K1 i c p)Eq (K1 i c p) =>(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)-> (K1 i c p -> K1 i c p -> K1 i c p)-> (K1 i c p -> K1 i c p -> K1 i c p)-> Ord (K1 i c p)K1 i c p -> K1 i c p -> BoolK1 i c p -> K1 i c p -> OrderingK1 i c p -> K1 i c p -> K1 i c pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall i c k (p :: k). Ord c => Eq (K1 i c p)forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Boolforall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Orderingforall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c p$ccompare :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Orderingcompare :: K1 i c p -> K1 i c p -> Ordering$c< :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool< :: K1 i c p -> K1 i c p -> Bool$c<= :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool<= :: K1 i c p -> K1 i c p -> Bool$c> :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool> :: K1 i c p -> K1 i c p -> Bool$c>= :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> Bool>= :: K1 i c p -> K1 i c p -> Bool$cmax :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c pmax :: K1 i c p -> K1 i c p -> K1 i c p$cmin :: forall i c k (p :: k). Ord c => K1 i c p -> K1 i c p -> K1 i c pmin :: K1 i c p -> K1 i c p -> K1 i c pOrd-- ^ @since 4.7.0.0,ReadPrec [K1 i c p]ReadPrec (K1 i c p)Int -> ReadS (K1 i c p)ReadS [K1 i c p](Int -> ReadS (K1 i c p))-> ReadS [K1 i c p]-> ReadPrec (K1 i c p)-> ReadPrec [K1 i c p]-> Read (K1 i c p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall i c k (p :: k). Read c => ReadPrec [K1 i c p]forall i c k (p :: k). Read c => ReadPrec (K1 i c p)forall i c k (p :: k). Read c => Int -> ReadS (K1 i c p)forall i c k (p :: k). Read c => ReadS [K1 i c p]$creadsPrec :: forall i c k (p :: k). Read c => Int -> ReadS (K1 i c p)readsPrec :: Int -> ReadS (K1 i c p)$creadList :: forall i c k (p :: k). Read c => ReadS [K1 i c p]readList :: ReadS [K1 i c p]$creadPrec :: forall i c k (p :: k). Read c => ReadPrec (K1 i c p)readPrec :: ReadPrec (K1 i c p)$creadListPrec :: forall i c k (p :: k). Read c => ReadPrec [K1 i c p]readListPrec :: ReadPrec [K1 i c p]Read-- ^ @since 4.7.0.0,Int -> K1 i c p -> ShowS[K1 i c p] -> ShowSK1 i c p -> String(Int -> K1 i c p -> ShowS)-> (K1 i c p -> String) -> ([K1 i c p] -> ShowS) -> Show (K1 i c p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall i c k (p :: k). Show c => Int -> K1 i c p -> ShowSforall i c k (p :: k). Show c => [K1 i c p] -> ShowSforall i c k (p :: k). Show c => K1 i c p -> String$cshowsPrec :: forall i c k (p :: k). Show c => Int -> K1 i c p -> ShowSshowsPrec :: Int -> K1 i c p -> ShowS$cshow :: forall i c k (p :: k). Show c => K1 i c p -> Stringshow :: K1 i c p -> String$cshowList :: forall i c k (p :: k). Show c => [K1 i c p] -> ShowSshowList :: [K1 i c p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> K1 i c a -> K1 i c b)-> (forall a b. a -> K1 i c b -> K1 i c a) -> Functor (K1 i c)forall a b. a -> K1 i c b -> K1 i c aforall a b. (a -> b) -> K1 i c a -> K1 i c bforall i c a b. a -> K1 i c b -> K1 i c aforall i c a b. (a -> b) -> K1 i c a -> K1 i c bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall i c a b. (a -> b) -> K1 i c a -> K1 i c bfmap :: forall a b. (a -> b) -> K1 i c a -> K1 i c b$c<$ :: forall i c a b. a -> K1 i c b -> K1 i c a<$ :: forall a b. a -> K1 i c b -> K1 i c aFunctor-- ^ @since 4.9.0.0,(forall x. K1 i c p -> Rep (K1 i c p) x)-> (forall x. Rep (K1 i c p) x -> K1 i c p) -> Generic (K1 i c p)forall x. K1 i c p -> Rep (K1 i c p) xforall x. Rep (K1 i c p) x -> K1 i c pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall i c k (p :: k) x. K1 i c p -> Rep (K1 i c p) xforall i c k (p :: k) x. Rep (K1 i c p) x -> K1 i c p$cfrom :: forall i c k (p :: k) x. K1 i c p -> Rep (K1 i c p) xfrom :: forall x. K1 i c p -> Rep (K1 i c p) x$cto :: forall i c k (p :: k) x. Rep (K1 i c p) x -> K1 i c pto :: forall x. Rep (K1 i c p) x -> K1 i c pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). K1 i c a -> Rep1 (K1 i c) a)-> (forall (a :: k). Rep1 (K1 i c) a -> K1 i c a)-> Generic1 (K1 i c)forall (a :: k). K1 i c a -> Rep1 (K1 i c) aforall (a :: k). Rep1 (K1 i c) a -> K1 i c aforall k i c (a :: k). K1 i c a -> Rep1 (K1 i c) aforall k i c (a :: k). Rep1 (K1 i c) a -> K1 i c aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k i c (a :: k). K1 i c a -> Rep1 (K1 i c) afrom1 :: forall (a :: k). K1 i c a -> Rep1 (K1 i c) a$cto1 :: forall k i c (a :: k). Rep1 (K1 i c) a -> K1 i c ato1 :: forall (a :: k). Rep1 (K1 i c) a -> K1 i c aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.12.0.0instanceMonoidc=>Applicative(K1ic)wherepure :: forall a. a -> K1 i c apurea_=c -> K1 i c aforall k i c (p :: k). c -> K1 i c pK1cforall a. Monoid a => amemptyliftA2 :: forall a b c. (a -> b -> c) -> K1 i c a -> K1 i c b -> K1 i c cliftA2=\a -> b -> c_->(c -> c -> c) -> K1 i c a -> K1 i c b -> K1 i c cforall a b. Coercible a b => a -> bcoerce(c -> c -> cforall a. Monoid a => a -> a -> amappend::c->c->c)<*> :: forall a b. K1 i c (a -> b) -> K1 i c a -> K1 i c b(<*>)=(c -> c -> c) -> K1 i c (a -> b) -> K1 i c a -> K1 i c bforall a b. Coercible a b => a -> bcoerce(c -> c -> cforall a. Monoid a => a -> a -> amappend::c->c->c)-- | @since 4.12.0.0derivinginstanceSemigroupc=>Semigroup(K1icp)-- | @since 4.12.0.0derivinginstanceMonoidc=>Monoid(K1icp)-- | @since 4.9.0.0derivinginstanceApplicativef=>Applicative(M1icf)-- | @since 4.9.0.0derivinginstanceAlternativef=>Alternative(M1icf)-- | @since 4.9.0.0derivinginstanceMonadf=>Monad(M1icf)-- | @since 4.9.0.0derivinginstanceMonadPlusf=>MonadPlus(M1icf)-- | @since 4.12.0.0derivinginstanceSemigroup(fp)=>Semigroup(M1icfp)-- | @since 4.12.0.0derivinginstanceMonoid(fp)=>Monoid(M1icfp)-- | Meta-information (constructor names, etc.)newtypeM1(i::Type)(c::Meta)(f::k->Type)(p::k)=M1{forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f punM1::fp}deriving(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) -> Eq (M1 i c f p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall i (c :: Meta) k (f :: k -> *) (p :: k).Eq (f p) =>M1 i c f p -> M1 i c f p -> Bool$c== :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Eq (f p) =>M1 i c f p -> M1 i c f p -> Bool== :: M1 i c f p -> M1 i c f p -> Bool$c/= :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Eq (f p) =>M1 i c f p -> M1 i c f p -> Bool/= :: M1 i c f p -> M1 i c f p -> BoolEq-- ^ @since 4.7.0.0,Eq (M1 i c f p)Eq (M1 i c f p) =>(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)-> (M1 i c f p -> M1 i c f p -> M1 i c f p)-> (M1 i c f p -> M1 i c f p -> M1 i c f p)-> Ord (M1 i c f p)M1 i c f p -> M1 i c f p -> BoolM1 i c f p -> M1 i c f p -> OrderingM1 i c f p -> M1 i c f p -> M1 i c f pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>Eq (M1 i c f p)forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Boolforall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Orderingforall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> M1 i c f p$ccompare :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Orderingcompare :: M1 i c f p -> M1 i c f p -> Ordering$c< :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Bool< :: M1 i c f p -> M1 i c f p -> Bool$c<= :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Bool<= :: M1 i c f p -> M1 i c f p -> Bool$c> :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Bool> :: M1 i c f p -> M1 i c f p -> Bool$c>= :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> Bool>= :: M1 i c f p -> M1 i c f p -> Bool$cmax :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> M1 i c f pmax :: M1 i c f p -> M1 i c f p -> M1 i c f p$cmin :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Ord (f p) =>M1 i c f p -> M1 i c f p -> M1 i c f pmin :: M1 i c f p -> M1 i c f p -> M1 i c f pOrd-- ^ @since 4.7.0.0,ReadPrec [M1 i c f p]ReadPrec (M1 i c f p)Int -> ReadS (M1 i c f p)ReadS [M1 i c f p](Int -> ReadS (M1 i c f p))-> ReadS [M1 i c f p]-> ReadPrec (M1 i c f p)-> ReadPrec [M1 i c f p]-> Read (M1 i c f p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadPrec [M1 i c f p]forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadPrec (M1 i c f p)forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>Int -> ReadS (M1 i c f p)forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadS [M1 i c f p]$creadsPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>Int -> ReadS (M1 i c f p)readsPrec :: Int -> ReadS (M1 i c f p)$creadList :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadS [M1 i c f p]readList :: ReadS [M1 i c f p]$creadPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadPrec (M1 i c f p)readPrec :: ReadPrec (M1 i c f p)$creadListPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Read (f p) =>ReadPrec [M1 i c f p]readListPrec :: ReadPrec [M1 i c f p]Read-- ^ @since 4.7.0.0,Int -> M1 i c f p -> ShowS[M1 i c f p] -> ShowSM1 i c f p -> String(Int -> M1 i c f p -> ShowS)-> (M1 i c f p -> String)-> ([M1 i c f p] -> ShowS)-> Show (M1 i c f p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>Int -> M1 i c f p -> ShowSforall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>[M1 i c f p] -> ShowSforall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>M1 i c f p -> String$cshowsPrec :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>Int -> M1 i c f p -> ShowSshowsPrec :: Int -> M1 i c f p -> ShowS$cshow :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>M1 i c f p -> Stringshow :: M1 i c f p -> String$cshowList :: forall i (c :: Meta) k (f :: k -> *) (p :: k).Show (f p) =>[M1 i c f p] -> ShowSshowList :: [M1 i c f p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> M1 i c f a -> M1 i c f b)-> (forall a b. a -> M1 i c f b -> M1 i c f a)-> Functor (M1 i c f)forall a b. a -> M1 i c f b -> M1 i c f aforall a b. (a -> b) -> M1 i c f a -> M1 i c f bforall i (c :: Meta) (f :: * -> *) a b.Functor f =>a -> M1 i c f b -> M1 i c f aforall i (c :: Meta) (f :: * -> *) a b.Functor f =>(a -> b) -> M1 i c f a -> M1 i c f bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall i (c :: Meta) (f :: * -> *) a b.Functor f =>(a -> b) -> M1 i c f a -> M1 i c f bfmap :: forall a b. (a -> b) -> M1 i c f a -> M1 i c f b$c<$ :: forall i (c :: Meta) (f :: * -> *) a b.Functor f =>a -> M1 i c f b -> M1 i c f a<$ :: forall a b. a -> M1 i c f b -> M1 i c f aFunctor-- ^ @since 4.9.0.0,(forall x. M1 i c f p -> Rep (M1 i c f p) x)-> (forall x. Rep (M1 i c f p) x -> M1 i c f p)-> Generic (M1 i c f p)forall x. M1 i c f p -> Rep (M1 i c f p) xforall x. Rep (M1 i c f p) x -> M1 i c f pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall i (c :: Meta) k (f :: k -> *) (p :: k) x.M1 i c f p -> Rep (M1 i c f p) xforall i (c :: Meta) k (f :: k -> *) (p :: k) x.Rep (M1 i c f p) x -> M1 i c f p$cfrom :: forall i (c :: Meta) k (f :: k -> *) (p :: k) x.M1 i c f p -> Rep (M1 i c f p) xfrom :: forall x. M1 i c f p -> Rep (M1 i c f p) x$cto :: forall i (c :: Meta) k (f :: k -> *) (p :: k) x.Rep (M1 i c f p) x -> M1 i c f pto :: forall x. Rep (M1 i c f p) x -> M1 i c f pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a)-> (forall (a :: k). Rep1 (M1 i c f) a -> M1 i c f a)-> Generic1 (M1 i c f)forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) aforall (a :: k). Rep1 (M1 i c f) a -> M1 i c f aforall i (c :: Meta) k (f :: k -> *) (a :: k).M1 i c f a -> Rep1 (M1 i c f) aforall i (c :: Meta) k (f :: k -> *) (a :: k).Rep1 (M1 i c f) a -> M1 i c f aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall i (c :: Meta) k (f :: k -> *) (a :: k).M1 i c f a -> Rep1 (M1 i c f) afrom1 :: forall (a :: k). M1 i c f a -> Rep1 (M1 i c f) a$cto1 :: forall i (c :: Meta) k (f :: k -> *) (a :: k).Rep1 (M1 i c f) a -> M1 i c f ato1 :: forall (a :: k). Rep1 (M1 i c f) a -> M1 i c f aGeneric1-- ^ @since 4.9.0.0)-- | Sums: encode choice between constructorsinfixr5:+:data(:+:)(f::k->Type)(g::k->Type)(p::k)=L1(fp)|R1(gp)deriving((:+:) f g p -> (:+:) f g p -> Bool((:+:) f g p -> (:+:) f g p -> Bool)-> ((:+:) f g p -> (:+:) f g p -> Bool) -> Eq ((:+:) f g p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool$c== :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool== :: (:+:) f g p -> (:+:) f g p -> Bool$c/= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool/= :: (:+:) f g p -> (:+:) f g p -> BoolEq-- ^ @since 4.7.0.0,Eq ((:+:) f g p)Eq ((:+:) f g p) =>((:+:) 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)-> ((:+:) f g p -> (:+:) f g p -> (:+:) f g p)-> ((:+:) f g p -> (:+:) f g p -> (:+:) f g p)-> Ord ((:+:) f g p)(:+:) f g p -> (:+:) f g p -> Bool(:+:) f g p -> (:+:) f g p -> Ordering(:+:) f g p -> (:+:) f g p -> (:+:) f g pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>Eq ((:+:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Boolforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Orderingforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> (:+:) f g p$ccompare :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Orderingcompare :: (:+:) f g p -> (:+:) f g p -> Ordering$c< :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool< :: (:+:) f g p -> (:+:) f g p -> Bool$c<= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool<= :: (:+:) f g p -> (:+:) f g p -> Bool$c> :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool> :: (:+:) f g p -> (:+:) f g p -> Bool$c>= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> Bool>= :: (:+:) f g p -> (:+:) f g p -> Bool$cmax :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> (:+:) f g pmax :: (:+:) f g p -> (:+:) f g p -> (:+:) f g p$cmin :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:+:) f g p -> (:+:) f g p -> (:+:) f g pmin :: (:+:) f g p -> (:+:) f g p -> (:+:) f g pOrd-- ^ @since 4.7.0.0,ReadPrec [(:+:) f g p]ReadPrec ((:+:) f g p)Int -> ReadS ((:+:) f g p)ReadS [(:+:) f g p](Int -> ReadS ((:+:) f g p))-> ReadS [(:+:) f g p]-> ReadPrec ((:+:) f g p)-> ReadPrec [(:+:) f g p]-> Read ((:+:) f g p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec [(:+:) f g p]forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec ((:+:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>Int -> ReadS ((:+:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadS [(:+:) f g p]$creadsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>Int -> ReadS ((:+:) f g p)readsPrec :: Int -> ReadS ((:+:) f g p)$creadList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadS [(:+:) f g p]readList :: ReadS [(:+:) f g p]$creadPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec ((:+:) f g p)readPrec :: ReadPrec ((:+:) f g p)$creadListPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec [(:+:) f g p]readListPrec :: ReadPrec [(:+:) f g p]Read-- ^ @since 4.7.0.0,Int -> (:+:) f g p -> ShowS[(:+:) f g p] -> ShowS(:+:) f g p -> String(Int -> (:+:) f g p -> ShowS)-> ((:+:) f g p -> String)-> ([(:+:) f g p] -> ShowS)-> Show ((:+:) f g p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>Int -> (:+:) f g p -> ShowSforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>[(:+:) f g p] -> ShowSforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>(:+:) f g p -> String$cshowsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>Int -> (:+:) f g p -> ShowSshowsPrec :: Int -> (:+:) f g p -> ShowS$cshow :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>(:+:) f g p -> Stringshow :: (:+:) f g p -> String$cshowList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>[(:+:) f g p] -> ShowSshowList :: [(:+:) f g p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> (:+:) f g a -> (:+:) f g b)-> (forall a b. a -> (:+:) f g b -> (:+:) f g a)-> Functor (f :+: g)forall a b. a -> (:+:) f g b -> (:+:) f g aforall a b. (a -> b) -> (:+:) f g a -> (:+:) f g bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor fforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:+:) f g b -> (:+:) f g aforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:+:) f g a -> (:+:) f g b$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:+:) f g a -> (:+:) f g bfmap :: forall a b. (a -> b) -> (:+:) f g a -> (:+:) f g b$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:+:) f g b -> (:+:) f g a<$ :: forall a b. a -> (:+:) f g b -> (:+:) f g aFunctor-- ^ @since 4.9.0.0,(forall x. (:+:) f g p -> Rep ((:+:) f g p) x)-> (forall x. Rep ((:+:) f g p) x -> (:+:) f g p)-> Generic ((:+:) f g p)forall x. (:+:) f g p -> Rep ((:+:) f g p) xforall x. Rep ((:+:) f g p) x -> (:+:) f g pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (f :: k -> *) (g :: k -> *) (p :: k) x.(:+:) f g p -> Rep ((:+:) f g p) xforall k (f :: k -> *) (g :: k -> *) (p :: k) x.Rep ((:+:) f g p) x -> (:+:) f g p$cfrom :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.(:+:) f g p -> Rep ((:+:) f g p) xfrom :: forall x. (:+:) f g p -> Rep ((:+:) f g p) x$cto :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.Rep ((:+:) f g p) x -> (:+:) f g pto :: forall x. Rep ((:+:) f g p) x -> (:+:) f g pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) a)-> (forall (a :: k). Rep1 (f :+: g) a -> (:+:) f g a)-> Generic1 (f :+: g)forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) aforall (a :: k). Rep1 (f :+: g) a -> (:+:) f g aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 fforall k (f :: k -> *) (g :: k -> *) (a :: k).(:+:) f g a -> Rep1 (f :+: g) aforall k (f :: k -> *) (g :: k -> *) (a :: k).Rep1 (f :+: g) a -> (:+:) f g a$cfrom1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).(:+:) f g a -> Rep1 (f :+: g) afrom1 :: forall (a :: k). (:+:) f g a -> Rep1 (f :+: g) a$cto1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).Rep1 (f :+: g) a -> (:+:) f g ato1 :: forall (a :: k). Rep1 (f :+: g) a -> (:+:) f g aGeneric1-- ^ @since 4.9.0.0)-- | Products: encode multiple arguments to constructorsinfixr6:*:data(:*:)(f::k->Type)(g::k->Type)(p::k)=fp:*:gpderiving((:*:) f g p -> (:*:) f g p -> Bool((:*:) f g p -> (:*:) f g p -> Bool)-> ((:*:) f g p -> (:*:) f g p -> Bool) -> Eq ((:*:) f g p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool$c== :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool== :: (:*:) f g p -> (:*:) f g p -> Bool$c/= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Eq (f p), Eq (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool/= :: (:*:) f g p -> (:*:) f g p -> BoolEq-- ^ @since 4.7.0.0,Eq ((:*:) f g p)Eq ((:*:) f g p) =>((:*:) 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)-> ((:*:) f g p -> (:*:) f g p -> (:*:) f g p)-> ((:*:) f g p -> (:*:) f g p -> (:*:) f g p)-> Ord ((:*:) f g p)(:*:) f g p -> (:*:) f g p -> Bool(:*:) f g p -> (:*:) f g p -> Ordering(:*:) f g p -> (:*:) f g p -> (:*:) f g pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>Eq ((:*:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Boolforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Orderingforall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> (:*:) f g p$ccompare :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Orderingcompare :: (:*:) f g p -> (:*:) f g p -> Ordering$c< :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool< :: (:*:) f g p -> (:*:) f g p -> Bool$c<= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool<= :: (:*:) f g p -> (:*:) f g p -> Bool$c> :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool> :: (:*:) f g p -> (:*:) f g p -> Bool$c>= :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> Bool>= :: (:*:) f g p -> (:*:) f g p -> Bool$cmax :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> (:*:) f g pmax :: (:*:) f g p -> (:*:) f g p -> (:*:) f g p$cmin :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Ord (f p), Ord (g p)) =>(:*:) f g p -> (:*:) f g p -> (:*:) f g pmin :: (:*:) f g p -> (:*:) f g p -> (:*:) f g pOrd-- ^ @since 4.7.0.0,ReadPrec [(:*:) f g p]ReadPrec ((:*:) f g p)Int -> ReadS ((:*:) f g p)ReadS [(:*:) f g p](Int -> ReadS ((:*:) f g p))-> ReadS [(:*:) f g p]-> ReadPrec ((:*:) f g p)-> ReadPrec [(:*:) f g p]-> Read ((:*:) f g p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec [(:*:) f g p]forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec ((:*:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>Int -> ReadS ((:*:) f g p)forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadS [(:*:) f g p]$creadsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>Int -> ReadS ((:*:) f g p)readsPrec :: Int -> ReadS ((:*:) f g p)$creadList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadS [(:*:) f g p]readList :: ReadS [(:*:) f g p]$creadPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec ((:*:) f g p)readPrec :: ReadPrec ((:*:) f g p)$creadListPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Read (f p), Read (g p)) =>ReadPrec [(:*:) f g p]readListPrec :: ReadPrec [(:*:) f g p]Read-- ^ @since 4.7.0.0,Int -> (:*:) f g p -> ShowS[(:*:) f g p] -> ShowS(:*:) f g p -> String(Int -> (:*:) f g p -> ShowS)-> ((:*:) f g p -> String)-> ([(:*:) f g p] -> ShowS)-> Show ((:*:) f g p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>Int -> (:*:) f g p -> ShowSforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>[(:*:) f g p] -> ShowSforall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>(:*:) f g p -> String$cshowsPrec :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>Int -> (:*:) f g p -> ShowSshowsPrec :: Int -> (:*:) f g p -> ShowS$cshow :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>(:*:) f g p -> Stringshow :: (:*:) f g p -> String$cshowList :: forall k (f :: k -> *) (g :: k -> *) (p :: k).(Show (f p), Show (g p)) =>[(:*:) f g p] -> ShowSshowList :: [(:*:) f g p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> (:*:) f g a -> (:*:) f g b)-> (forall a b. a -> (:*:) f g b -> (:*:) f g a)-> Functor (f :*: g)forall a b. a -> (:*:) f g b -> (:*:) f g aforall a b. (a -> b) -> (:*:) f g a -> (:*:) f g bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor fforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:*:) f g b -> (:*:) f g aforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:*:) f g a -> (:*:) f g b$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:*:) f g a -> (:*:) f g bfmap :: forall a b. (a -> b) -> (:*:) f g a -> (:*:) f g b$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:*:) f g b -> (:*:) f g a<$ :: forall a b. a -> (:*:) f g b -> (:*:) f g aFunctor-- ^ @since 4.9.0.0,(forall x. (:*:) f g p -> Rep ((:*:) f g p) x)-> (forall x. Rep ((:*:) f g p) x -> (:*:) f g p)-> Generic ((:*:) f g p)forall x. (:*:) f g p -> Rep ((:*:) f g p) xforall x. Rep ((:*:) f g p) x -> (:*:) f g pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (f :: k -> *) (g :: k -> *) (p :: k) x.(:*:) f g p -> Rep ((:*:) f g p) xforall k (f :: k -> *) (g :: k -> *) (p :: k) x.Rep ((:*:) f g p) x -> (:*:) f g p$cfrom :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.(:*:) f g p -> Rep ((:*:) f g p) xfrom :: forall x. (:*:) f g p -> Rep ((:*:) f g p) x$cto :: forall k (f :: k -> *) (g :: k -> *) (p :: k) x.Rep ((:*:) f g p) x -> (:*:) f g pto :: forall x. Rep ((:*:) f g p) x -> (:*:) f g pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) a)-> (forall (a :: k). Rep1 (f :*: g) a -> (:*:) f g a)-> Generic1 (f :*: g)forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) aforall (a :: k). Rep1 (f :*: g) a -> (:*:) f g aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 fforall k (f :: k -> *) (g :: k -> *) (a :: k).(:*:) f g a -> Rep1 (f :*: g) aforall k (f :: k -> *) (g :: k -> *) (a :: k).Rep1 (f :*: g) a -> (:*:) f g a$cfrom1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).(:*:) f g a -> Rep1 (f :*: g) afrom1 :: forall (a :: k). (:*:) f g a -> Rep1 (f :*: g) a$cto1 :: forall k (f :: k -> *) (g :: k -> *) (a :: k).Rep1 (f :*: g) a -> (:*:) f g ato1 :: forall (a :: k). Rep1 (f :*: g) a -> (:*:) f g aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.9.0.0instance(Applicativef,Applicativeg)=>Applicative(f:*:g)wherepure :: forall a. a -> (:*:) f g apureaa=a -> f aforall a. a -> f aforall (f :: * -> *) a. Applicative f => a -> f apureaaf a -> g a -> (:*:) f g aforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:a -> g aforall a. a -> g aforall (f :: * -> *) a. Applicative f => a -> f apureaa(f (a -> b)f:*:g (a -> b)g)<*> :: forall a b. (:*:) f g (a -> b) -> (:*:) f g a -> (:*:) f g b<*>(f ax:*:g ay)=(f (a -> b)ff (a -> b) -> f a -> f bforall a b. f (a -> b) -> f a -> f bforall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b<*>f ax)f b -> g b -> (:*:) f g bforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:(g (a -> b)gg (a -> b) -> g a -> g bforall a b. g (a -> b) -> g a -> g bforall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b<*>g ay)liftA2 :: forall a b c.(a -> b -> c) -> (:*:) f g a -> (:*:) f g b -> (:*:) f g cliftA2a -> b -> cf(f aa:*:g ab)(f bx:*:g by)=(a -> b -> c) -> f a -> f b -> f cforall a b c. (a -> b -> c) -> f a -> f b -> f cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2a -> b -> cff aaf bxf c -> g c -> (:*:) f g cforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:(a -> b -> c) -> g a -> g b -> g cforall a b c. (a -> b -> c) -> g a -> g b -> g cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2a -> b -> cfg abg by-- | @since 4.9.0.0instance(Alternativef,Alternativeg)=>Alternative(f:*:g)whereempty :: forall a. (:*:) f g aempty=f aforall a. f aforall (f :: * -> *) a. Alternative f => f aemptyf a -> g a -> (:*:) f g aforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:g aforall a. g aforall (f :: * -> *) a. Alternative f => f aempty(f ax1:*:g ay1)<|> :: forall a. (:*:) f g a -> (:*:) f g a -> (:*:) f g a<|>(f ax2:*:g ay2)=(f ax1f a -> f a -> f aforall a. f a -> f a -> f aforall (f :: * -> *) a. Alternative f => f a -> f a -> f a<|>f ax2)f a -> g a -> (:*:) f g aforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:(g ay1g a -> g a -> g aforall a. g a -> g a -> g aforall (f :: * -> *) a. Alternative f => f a -> f a -> f a<|>g ay2)-- | @since 4.9.0.0instance(Monadf,Monadg)=>Monad(f:*:g)where(f am:*:g an)>>= :: forall a b. (:*:) f g a -> (a -> (:*:) f g b) -> (:*:) f g b>>=a -> (:*:) f g bf=(f amf a -> (a -> f b) -> f bforall a b. f a -> (a -> f b) -> f bforall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b>>=\aa->(:*:) f g b -> f bforall {k} {f :: k -> *} {g :: k -> *} {p :: k}. (:*:) f g p -> f pfstP(a -> (:*:) f g bfaa))f b -> g b -> (:*:) f g bforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:(g ang a -> (a -> g b) -> g bforall a b. g a -> (a -> g b) -> g bforall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b>>=\aa->(:*:) f g b -> g bforall {k} {f :: k -> *} {g :: k -> *} {p :: k}. (:*:) f g p -> g psndP(a -> (:*:) f g bfaa))wherefstP :: (:*:) f g p -> f pfstP(f pa:*:g p_)=f pasndP :: (:*:) f g p -> g psndP(f p_:*:g pb)=g pb-- | @since 4.9.0.0instance(MonadPlusf,MonadPlusg)=>MonadPlus(f:*:g)-- | @since 4.12.0.0instance(Semigroup(fp),Semigroup(gp))=>Semigroup((f:*:g)p)where(f px1:*:g py1)<> :: (:*:) f g p -> (:*:) f g p -> (:*:) f g p<>(f px2:*:g py2)=(f px1f p -> f p -> f pforall a. Semigroup a => a -> a -> a<>f px2)f p -> g p -> (:*:) f g pforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:(g py1g p -> g p -> g pforall a. Semigroup a => a -> a -> a<>g py2)-- | @since 4.12.0.0instance(Monoid(fp),Monoid(gp))=>Monoid((f:*:g)p)wheremempty :: (:*:) f g pmempty=f pforall a. Monoid a => amemptyf p -> g p -> (:*:) f g pforall k (f :: k -> *) (g :: k -> *) (p :: k).f p -> g p -> (:*:) f g p:*:g pforall a. Monoid a => amempty-- | Composition of functorsinfixr7:.:newtype(:.:)(f::k2->Type)(g::k1->k2)(p::k1)=Comp1{forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).(:.:) f g p -> f (g p)unComp1::f(gp)}deriving((:.:) f g p -> (:.:) f g p -> Bool((:.:) f g p -> (:.:) f g p -> Bool)-> ((:.:) f g p -> (:.:) f g p -> Bool) -> Eq ((:.:) f g p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Eq (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool$c== :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Eq (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool== :: (:.:) f g p -> (:.:) f g p -> Bool$c/= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Eq (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool/= :: (:.:) f g p -> (:.:) f g p -> BoolEq-- ^ @since 4.7.0.0,Eq ((:.:) f g p)Eq ((:.:) f g p) =>((:.:) 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)-> ((:.:) f g p -> (:.:) f g p -> (:.:) f g p)-> ((:.:) f g p -> (:.:) f g p -> (:.:) f g p)-> Ord ((:.:) f g p)(:.:) f g p -> (:.:) f g p -> Bool(:.:) f g p -> (:.:) f g p -> Ordering(:.:) f g p -> (:.:) f g p -> (:.:) f g pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>Eq ((:.:) f g p)forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Boolforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Orderingforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> (:.:) f g p$ccompare :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Orderingcompare :: (:.:) f g p -> (:.:) f g p -> Ordering$c< :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool< :: (:.:) f g p -> (:.:) f g p -> Bool$c<= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool<= :: (:.:) f g p -> (:.:) f g p -> Bool$c> :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool> :: (:.:) f g p -> (:.:) f g p -> Bool$c>= :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> Bool>= :: (:.:) f g p -> (:.:) f g p -> Bool$cmax :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> (:.:) f g pmax :: (:.:) f g p -> (:.:) f g p -> (:.:) f g p$cmin :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Ord (f (g p)) =>(:.:) f g p -> (:.:) f g p -> (:.:) f g pmin :: (:.:) f g p -> (:.:) f g p -> (:.:) f g pOrd-- ^ @since 4.7.0.0,ReadPrec [(:.:) f g p]ReadPrec ((:.:) f g p)Int -> ReadS ((:.:) f g p)ReadS [(:.:) f g p](Int -> ReadS ((:.:) f g p))-> ReadS [(:.:) f g p]-> ReadPrec ((:.:) f g p)-> ReadPrec [(:.:) f g p]-> Read ((:.:) f g p)forall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read aforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadPrec [(:.:) f g p]forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadPrec ((:.:) f g p)forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>Int -> ReadS ((:.:) f g p)forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadS [(:.:) f g p]$creadsPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>Int -> ReadS ((:.:) f g p)readsPrec :: Int -> ReadS ((:.:) f g p)$creadList :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadS [(:.:) f g p]readList :: ReadS [(:.:) f g p]$creadPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadPrec ((:.:) f g p)readPrec :: ReadPrec ((:.:) f g p)$creadListPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Read (f (g p)) =>ReadPrec [(:.:) f g p]readListPrec :: ReadPrec [(:.:) f g p]Read-- ^ @since 4.7.0.0,Int -> (:.:) f g p -> ShowS[(:.:) f g p] -> ShowS(:.:) f g p -> String(Int -> (:.:) f g p -> ShowS)-> ((:.:) f g p -> String)-> ([(:.:) f g p] -> ShowS)-> Show ((:.:) f g p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>Int -> (:.:) f g p -> ShowSforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>[(:.:) f g p] -> ShowSforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>(:.:) f g p -> String$cshowsPrec :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>Int -> (:.:) f g p -> ShowSshowsPrec :: Int -> (:.:) f g p -> ShowS$cshow :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>(:.:) f g p -> Stringshow :: (:.:) f g p -> String$cshowList :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).Show (f (g p)) =>[(:.:) f g p] -> ShowSshowList :: [(:.:) f g p] -> ShowSShow-- ^ @since 4.7.0.0,(forall a b. (a -> b) -> (:.:) f g a -> (:.:) f g b)-> (forall a b. a -> (:.:) f g b -> (:.:) f g a)-> Functor (f :.: g)forall a b. a -> (:.:) f g b -> (:.:) f g aforall a b. (a -> b) -> (:.:) f g a -> (:.:) f g bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor fforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:.:) f g b -> (:.:) f g aforall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:.:) f g a -> (:.:) f g b$cfmap :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>(a -> b) -> (:.:) f g a -> (:.:) f g bfmap :: forall a b. (a -> b) -> (:.:) f g a -> (:.:) f g b$c<$ :: forall (f :: * -> *) (g :: * -> *) a b.(Functor f, Functor g) =>a -> (:.:) f g b -> (:.:) f g a<$ :: forall a b. a -> (:.:) f g b -> (:.:) f g aFunctor-- ^ @since 4.9.0.0,(forall x. (:.:) f g p -> Rep ((:.:) f g p) x)-> (forall x. Rep ((:.:) f g p) x -> (:.:) f g p)-> Generic ((:.:) f g p)forall x. (:.:) f g p -> Rep ((:.:) f g p) xforall x. Rep ((:.:) f g p) x -> (:.:) f g pforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.(:.:) f g p -> Rep ((:.:) f g p) xforall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.Rep ((:.:) f g p) x -> (:.:) f g p$cfrom :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.(:.:) f g p -> Rep ((:.:) f g p) xfrom :: forall x. (:.:) f g p -> Rep ((:.:) f g p) x$cto :: forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1) x.Rep ((:.:) f g p) x -> (:.:) f g pto :: forall x. Rep ((:.:) f g p) x -> (:.:) f g pGeneric-- ^ @since 4.7.0.0,(forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) a)-> (forall (a :: k). Rep1 (f :.: g) a -> (:.:) f g a)-> Generic1 (f :.: g)forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) aforall (a :: k). Rep1 (f :.: g) a -> (:.:) f g aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 fforall (f :: * -> *) k (g :: k -> *) (a :: k).Functor f =>(:.:) f g a -> Rep1 (f :.: g) aforall (f :: * -> *) k (g :: k -> *) (a :: k).Functor f =>Rep1 (f :.: g) a -> (:.:) f g a$cfrom1 :: forall (f :: * -> *) k (g :: k -> *) (a :: k).Functor f =>(:.:) f g a -> Rep1 (f :.: g) afrom1 :: forall (a :: k). (:.:) f g a -> Rep1 (f :.: g) a$cto1 :: forall (f :: * -> *) k (g :: k -> *) (a :: k).Functor f =>Rep1 (f :.: g) a -> (:.:) f g ato1 :: forall (a :: k). Rep1 (f :.: g) a -> (:.:) f g aGeneric1-- ^ @since 4.9.0.0)-- | @since 4.9.0.0instance(Applicativef,Applicativeg)=>Applicative(f:.:g)wherepure :: forall a. a -> (:.:) f g apureax=f (g a) -> (:.:) f g aforall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).f (g p) -> (:.:) f g pComp1(g a -> f (g a)forall a. a -> f aforall (f :: * -> *) a. Applicative f => a -> f apure(a -> g aforall a. a -> g aforall (f :: * -> *) a. Applicative f => a -> f apureax))Comp1f (g (a -> b))f<*> :: forall a b. (:.:) f g (a -> b) -> (:.:) f g a -> (:.:) f g b<*>Comp1f (g a)x=f (g b) -> (:.:) f g bforall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).f (g p) -> (:.:) f g pComp1((g (a -> b) -> g a -> g b) -> f (g (a -> b)) -> f (g a) -> f (g b)forall a b c. (a -> b -> c) -> f a -> f b -> f cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2g (a -> b) -> g a -> g bforall a b. g (a -> b) -> g a -> g bforall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b(<*>)f (g (a -> b))ff (g a)x)liftA2 :: forall a b c.(a -> b -> c) -> (:.:) f g a -> (:.:) f g b -> (:.:) f g cliftA2a -> b -> cf(Comp1f (g a)x)(Comp1f (g b)y)=f (g c) -> (:.:) f g cforall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).f (g p) -> (:.:) f g pComp1((g a -> g b -> g c) -> f (g a) -> f (g b) -> f (g c)forall a b c. (a -> b -> c) -> f a -> f b -> f cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2((a -> b -> c) -> g a -> g b -> g cforall a b c. (a -> b -> c) -> g a -> g b -> g cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2a -> b -> cf)f (g a)xf (g b)y)-- | @since 4.9.0.0instance(Alternativef,Applicativeg)=>Alternative(f:.:g)whereempty :: forall a. (:.:) f g aempty=f (g a) -> (:.:) f g aforall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).f (g p) -> (:.:) f g pComp1f (g a)forall a. f aforall (f :: * -> *) a. Alternative f => f aempty<|> :: forall a. (:.:) f g a -> (:.:) f g a -> (:.:) f g a(<|>)=(f (g a) -> f (g a) -> f (g a))-> (:.:) f g a -> (:.:) f g a -> (:.:) f g aforall a b. Coercible a b => a -> bcoerce(f (g a) -> f (g a) -> f (g a)forall a. f a -> f a -> f aforall (f :: * -> *) a. Alternative f => f a -> f a -> f a(<|>)::f(ga)->f(ga)->f(ga))::foralla.(f:.:g)a->(f:.:g)a->(f:.:g)a-- | @since 4.12.0.0derivinginstanceSemigroup(f(gp))=>Semigroup((f:.:g)p)-- | @since 4.12.0.0derivinginstanceMonoid(f(gp))=>Monoid((f:.:g)p)-- | Constants of unlifted kinds---- @since 4.9.0.0datafamilyURec(a::Type)(p::k)-- | Used for marking occurrences of 'Addr#'---- @since 4.9.0.0datainstanceURec(Ptr())(p::k)=UAddr{forall k (p :: k). URec (Ptr ()) p -> Addr#uAddr#::Addr#}deriving(URec (Ptr ()) p -> URec (Ptr ()) p -> Bool(URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> Eq (URec (Ptr ()) p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$c== :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool== :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$c/= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool/= :: URec (Ptr ()) p -> URec (Ptr ()) p -> BoolEq-- ^ @since 4.9.0.0,Eq (URec (Ptr ()) p)Eq (URec (Ptr ()) p) =>(URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> Bool)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p)-> (URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p)-> Ord (URec (Ptr ()) p)URec (Ptr ()) p -> URec (Ptr ()) p -> BoolURec (Ptr ()) p -> URec (Ptr ()) p -> OrderingURec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec (Ptr ()) p)forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Boolforall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Orderingforall k (p :: k).URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p$ccompare :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Orderingcompare :: URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering$c< :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool< :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$c<= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool<= :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$c> :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool> :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$c>= :: forall k (p :: k). URec (Ptr ()) p -> URec (Ptr ()) p -> Bool>= :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool$cmax :: forall k (p :: k).URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) pmax :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p$cmin :: forall k (p :: k).URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) pmin :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) pOrd-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b)-> (forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a)-> Functor (URec (Ptr ()))forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) aforall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) bfmap :: forall a b. (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b$c<$ :: forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) a<$ :: forall a b. a -> URec (Ptr ()) b -> URec (Ptr ()) aFunctor-- ^ @since 4.9.0.0,(forall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x)-> (forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p)-> Generic (URec (Ptr ()) p)forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) pforall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) pforall k (p :: k) x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x$cfrom :: forall k (p :: k) x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) xfrom :: forall x. URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x$cto :: forall k (p :: k) x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) pto :: forall x. Rep (URec (Ptr ()) p) x -> URec (Ptr ()) pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a)-> (forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a)-> Generic1 (URec (Ptr ()))forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) aforall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) aforall k (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) aforall k (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) afrom1 :: forall (a :: k). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a$cto1 :: forall k (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) ato1 :: forall (a :: k). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) aGeneric1-- ^ @since 4.9.0.0)-- | Used for marking occurrences of 'Char#'---- @since 4.9.0.0datainstanceURecChar(p::k)=UChar{forall k (p :: k). URec Char p -> Char#uChar#::Char#}deriving(URec Char p -> URec Char p -> Bool(URec Char p -> URec Char p -> Bool)-> (URec Char p -> URec Char p -> Bool) -> Eq (URec Char p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec Char p -> URec Char p -> Bool$c== :: forall k (p :: k). URec Char p -> URec Char p -> Bool== :: URec Char p -> URec Char p -> Bool$c/= :: forall k (p :: k). URec Char p -> URec Char p -> Bool/= :: URec Char p -> URec Char p -> BoolEq-- ^ @since 4.9.0.0,Eq (URec Char p)Eq (URec Char p) =>(URec Char p -> URec Char p -> Ordering)-> (URec Char p -> URec Char p -> Bool)-> (URec Char p -> URec Char p -> Bool)-> (URec Char p -> URec Char p -> Bool)-> (URec Char p -> URec Char p -> Bool)-> (URec Char p -> URec Char p -> URec Char p)-> (URec Char p -> URec Char p -> URec Char p)-> Ord (URec Char p)URec Char p -> URec Char p -> BoolURec Char p -> URec Char p -> OrderingURec Char p -> URec Char p -> URec Char pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec Char p)forall k (p :: k). URec Char p -> URec Char p -> Boolforall k (p :: k). URec Char p -> URec Char p -> Orderingforall k (p :: k). URec Char p -> URec Char p -> URec Char p$ccompare :: forall k (p :: k). URec Char p -> URec Char p -> Orderingcompare :: URec Char p -> URec Char p -> Ordering$c< :: forall k (p :: k). URec Char p -> URec Char p -> Bool< :: URec Char p -> URec Char p -> Bool$c<= :: forall k (p :: k). URec Char p -> URec Char p -> Bool<= :: URec Char p -> URec Char p -> Bool$c> :: forall k (p :: k). URec Char p -> URec Char p -> Bool> :: URec Char p -> URec Char p -> Bool$c>= :: forall k (p :: k). URec Char p -> URec Char p -> Bool>= :: URec Char p -> URec Char p -> Bool$cmax :: forall k (p :: k). URec Char p -> URec Char p -> URec Char pmax :: URec Char p -> URec Char p -> URec Char p$cmin :: forall k (p :: k). URec Char p -> URec Char p -> URec Char pmin :: URec Char p -> URec Char p -> URec Char pOrd-- ^ @since 4.9.0.0,Int -> URec Char p -> ShowS[URec Char p] -> ShowSURec Char p -> String(Int -> URec Char p -> ShowS)-> (URec Char p -> String)-> ([URec Char p] -> ShowS)-> Show (URec Char p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> URec Char p -> ShowSforall k (p :: k). [URec Char p] -> ShowSforall k (p :: k). URec Char p -> String$cshowsPrec :: forall k (p :: k). Int -> URec Char p -> ShowSshowsPrec :: Int -> URec Char p -> ShowS$cshow :: forall k (p :: k). URec Char p -> Stringshow :: URec Char p -> String$cshowList :: forall k (p :: k). [URec Char p] -> ShowSshowList :: [URec Char p] -> ShowSShow-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> URec Char a -> URec Char b)-> (forall a b. a -> URec Char b -> URec Char a)-> Functor (URec Char)forall a b. a -> URec Char b -> URec Char aforall a b. (a -> b) -> URec Char a -> URec Char bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec Char a -> URec Char bfmap :: forall a b. (a -> b) -> URec Char a -> URec Char b$c<$ :: forall a b. a -> URec Char b -> URec Char a<$ :: forall a b. a -> URec Char b -> URec Char aFunctor-- ^ @since 4.9.0.0,(forall x. URec Char p -> Rep (URec Char p) x)-> (forall x. Rep (URec Char p) x -> URec Char p)-> Generic (URec Char p)forall x. Rep (URec Char p) x -> URec Char pforall x. URec Char p -> Rep (URec Char p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec Char p) x -> URec Char pforall k (p :: k) x. URec Char p -> Rep (URec Char p) x$cfrom :: forall k (p :: k) x. URec Char p -> Rep (URec Char p) xfrom :: forall x. URec Char p -> Rep (URec Char p) x$cto :: forall k (p :: k) x. Rep (URec Char p) x -> URec Char pto :: forall x. Rep (URec Char p) x -> URec Char pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). URec Char a -> Rep1 (URec Char) a)-> (forall (a :: k). Rep1 (URec Char) a -> URec Char a)-> Generic1 (URec Char)forall (a :: k). Rep1 (URec Char) a -> URec Char aforall (a :: k). URec Char a -> Rep1 (URec Char) aforall k (a :: k). Rep1 (URec Char) a -> URec Char aforall k (a :: k). URec Char a -> Rep1 (URec Char) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec Char a -> Rep1 (URec Char) afrom1 :: forall (a :: k). URec Char a -> Rep1 (URec Char) a$cto1 :: forall k (a :: k). Rep1 (URec Char) a -> URec Char ato1 :: forall (a :: k). Rep1 (URec Char) a -> URec Char aGeneric1-- ^ @since 4.9.0.0)-- | Used for marking occurrences of 'Double#'---- @since 4.9.0.0datainstanceURecDouble(p::k)=UDouble{forall k (p :: k). URec Double p -> Double#uDouble#::Double#}deriving(URec Double p -> URec Double p -> Bool(URec Double p -> URec Double p -> Bool)-> (URec Double p -> URec Double p -> Bool) -> Eq (URec Double p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec Double p -> URec Double p -> Bool$c== :: forall k (p :: k). URec Double p -> URec Double p -> Bool== :: URec Double p -> URec Double p -> Bool$c/= :: forall k (p :: k). URec Double p -> URec Double p -> Bool/= :: URec Double p -> URec Double p -> BoolEq-- ^ @since 4.9.0.0,Eq (URec Double p)Eq (URec Double p) =>(URec Double p -> URec Double p -> Ordering)-> (URec Double p -> URec Double p -> Bool)-> (URec Double p -> URec Double p -> Bool)-> (URec Double p -> URec Double p -> Bool)-> (URec Double p -> URec Double p -> Bool)-> (URec Double p -> URec Double p -> URec Double p)-> (URec Double p -> URec Double p -> URec Double p)-> Ord (URec Double p)URec Double p -> URec Double p -> BoolURec Double p -> URec Double p -> OrderingURec Double p -> URec Double p -> URec Double pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec Double p)forall k (p :: k). URec Double p -> URec Double p -> Boolforall k (p :: k). URec Double p -> URec Double p -> Orderingforall k (p :: k). URec Double p -> URec Double p -> URec Double p$ccompare :: forall k (p :: k). URec Double p -> URec Double p -> Orderingcompare :: URec Double p -> URec Double p -> Ordering$c< :: forall k (p :: k). URec Double p -> URec Double p -> Bool< :: URec Double p -> URec Double p -> Bool$c<= :: forall k (p :: k). URec Double p -> URec Double p -> Bool<= :: URec Double p -> URec Double p -> Bool$c> :: forall k (p :: k). URec Double p -> URec Double p -> Bool> :: URec Double p -> URec Double p -> Bool$c>= :: forall k (p :: k). URec Double p -> URec Double p -> Bool>= :: URec Double p -> URec Double p -> Bool$cmax :: forall k (p :: k). URec Double p -> URec Double p -> URec Double pmax :: URec Double p -> URec Double p -> URec Double p$cmin :: forall k (p :: k). URec Double p -> URec Double p -> URec Double pmin :: URec Double p -> URec Double p -> URec Double pOrd-- ^ @since 4.9.0.0,Int -> URec Double p -> ShowS[URec Double p] -> ShowSURec Double p -> String(Int -> URec Double p -> ShowS)-> (URec Double p -> String)-> ([URec Double p] -> ShowS)-> Show (URec Double p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> URec Double p -> ShowSforall k (p :: k). [URec Double p] -> ShowSforall k (p :: k). URec Double p -> String$cshowsPrec :: forall k (p :: k). Int -> URec Double p -> ShowSshowsPrec :: Int -> URec Double p -> ShowS$cshow :: forall k (p :: k). URec Double p -> Stringshow :: URec Double p -> String$cshowList :: forall k (p :: k). [URec Double p] -> ShowSshowList :: [URec Double p] -> ShowSShow-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> URec Double a -> URec Double b)-> (forall a b. a -> URec Double b -> URec Double a)-> Functor (URec Double)forall a b. a -> URec Double b -> URec Double aforall a b. (a -> b) -> URec Double a -> URec Double bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec Double a -> URec Double bfmap :: forall a b. (a -> b) -> URec Double a -> URec Double b$c<$ :: forall a b. a -> URec Double b -> URec Double a<$ :: forall a b. a -> URec Double b -> URec Double aFunctor-- ^ @since 4.9.0.0,(forall x. URec Double p -> Rep (URec Double p) x)-> (forall x. Rep (URec Double p) x -> URec Double p)-> Generic (URec Double p)forall x. Rep (URec Double p) x -> URec Double pforall x. URec Double p -> Rep (URec Double p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec Double p) x -> URec Double pforall k (p :: k) x. URec Double p -> Rep (URec Double p) x$cfrom :: forall k (p :: k) x. URec Double p -> Rep (URec Double p) xfrom :: forall x. URec Double p -> Rep (URec Double p) x$cto :: forall k (p :: k) x. Rep (URec Double p) x -> URec Double pto :: forall x. Rep (URec Double p) x -> URec Double pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). URec Double a -> Rep1 (URec Double) a)-> (forall (a :: k). Rep1 (URec Double) a -> URec Double a)-> Generic1 (URec Double)forall (a :: k). Rep1 (URec Double) a -> URec Double aforall (a :: k). URec Double a -> Rep1 (URec Double) aforall k (a :: k). Rep1 (URec Double) a -> URec Double aforall k (a :: k). URec Double a -> Rep1 (URec Double) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec Double a -> Rep1 (URec Double) afrom1 :: forall (a :: k). URec Double a -> Rep1 (URec Double) a$cto1 :: forall k (a :: k). Rep1 (URec Double) a -> URec Double ato1 :: forall (a :: k). Rep1 (URec Double) a -> URec Double aGeneric1-- ^ @since 4.9.0.0)-- | Used for marking occurrences of 'Float#'---- @since 4.9.0.0datainstanceURecFloat(p::k)=UFloat{forall k (p :: k). URec Float p -> Float#uFloat#::Float#}deriving(URec Float p -> URec Float p -> Bool(URec Float p -> URec Float p -> Bool)-> (URec Float p -> URec Float p -> Bool) -> Eq (URec Float p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec Float p -> URec Float p -> Bool$c== :: forall k (p :: k). URec Float p -> URec Float p -> Bool== :: URec Float p -> URec Float p -> Bool$c/= :: forall k (p :: k). URec Float p -> URec Float p -> Bool/= :: URec Float p -> URec Float p -> BoolEq,Eq (URec Float p)Eq (URec Float p) =>(URec Float p -> URec Float p -> Ordering)-> (URec Float p -> URec Float p -> Bool)-> (URec Float p -> URec Float p -> Bool)-> (URec Float p -> URec Float p -> Bool)-> (URec Float p -> URec Float p -> Bool)-> (URec Float p -> URec Float p -> URec Float p)-> (URec Float p -> URec Float p -> URec Float p)-> Ord (URec Float p)URec Float p -> URec Float p -> BoolURec Float p -> URec Float p -> OrderingURec Float p -> URec Float p -> URec Float pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec Float p)forall k (p :: k). URec Float p -> URec Float p -> Boolforall k (p :: k). URec Float p -> URec Float p -> Orderingforall k (p :: k). URec Float p -> URec Float p -> URec Float p$ccompare :: forall k (p :: k). URec Float p -> URec Float p -> Orderingcompare :: URec Float p -> URec Float p -> Ordering$c< :: forall k (p :: k). URec Float p -> URec Float p -> Bool< :: URec Float p -> URec Float p -> Bool$c<= :: forall k (p :: k). URec Float p -> URec Float p -> Bool<= :: URec Float p -> URec Float p -> Bool$c> :: forall k (p :: k). URec Float p -> URec Float p -> Bool> :: URec Float p -> URec Float p -> Bool$c>= :: forall k (p :: k). URec Float p -> URec Float p -> Bool>= :: URec Float p -> URec Float p -> Bool$cmax :: forall k (p :: k). URec Float p -> URec Float p -> URec Float pmax :: URec Float p -> URec Float p -> URec Float p$cmin :: forall k (p :: k). URec Float p -> URec Float p -> URec Float pmin :: URec Float p -> URec Float p -> URec Float pOrd,Int -> URec Float p -> ShowS[URec Float p] -> ShowSURec Float p -> String(Int -> URec Float p -> ShowS)-> (URec Float p -> String)-> ([URec Float p] -> ShowS)-> Show (URec Float p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> URec Float p -> ShowSforall k (p :: k). [URec Float p] -> ShowSforall k (p :: k). URec Float p -> String$cshowsPrec :: forall k (p :: k). Int -> URec Float p -> ShowSshowsPrec :: Int -> URec Float p -> ShowS$cshow :: forall k (p :: k). URec Float p -> Stringshow :: URec Float p -> String$cshowList :: forall k (p :: k). [URec Float p] -> ShowSshowList :: [URec Float p] -> ShowSShow,(forall a b. (a -> b) -> URec Float a -> URec Float b)-> (forall a b. a -> URec Float b -> URec Float a)-> Functor (URec Float)forall a b. a -> URec Float b -> URec Float aforall a b. (a -> b) -> URec Float a -> URec Float bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec Float a -> URec Float bfmap :: forall a b. (a -> b) -> URec Float a -> URec Float b$c<$ :: forall a b. a -> URec Float b -> URec Float a<$ :: forall a b. a -> URec Float b -> URec Float aFunctor-- ^ @since 4.9.0.0,(forall x. URec Float p -> Rep (URec Float p) x)-> (forall x. Rep (URec Float p) x -> URec Float p)-> Generic (URec Float p)forall x. Rep (URec Float p) x -> URec Float pforall x. URec Float p -> Rep (URec Float p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec Float p) x -> URec Float pforall k (p :: k) x. URec Float p -> Rep (URec Float p) x$cfrom :: forall k (p :: k) x. URec Float p -> Rep (URec Float p) xfrom :: forall x. URec Float p -> Rep (URec Float p) x$cto :: forall k (p :: k) x. Rep (URec Float p) x -> URec Float pto :: forall x. Rep (URec Float p) x -> URec Float pGeneric,(forall (a :: k). URec Float a -> Rep1 (URec Float) a)-> (forall (a :: k). Rep1 (URec Float) a -> URec Float a)-> Generic1 (URec Float)forall (a :: k). Rep1 (URec Float) a -> URec Float aforall (a :: k). URec Float a -> Rep1 (URec Float) aforall k (a :: k). Rep1 (URec Float) a -> URec Float aforall k (a :: k). URec Float a -> Rep1 (URec Float) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec Float a -> Rep1 (URec Float) afrom1 :: forall (a :: k). URec Float a -> Rep1 (URec Float) a$cto1 :: forall k (a :: k). Rep1 (URec Float) a -> URec Float ato1 :: forall (a :: k). Rep1 (URec Float) a -> URec Float aGeneric1-- ^ @since 4.9.0.0)-- | Used for marking occurrences of 'Int#'---- @since 4.9.0.0datainstanceURecInt(p::k)=UInt{forall k (p :: k). URec Int p -> Int#uInt#::Int#}deriving(URec Int p -> URec Int p -> Bool(URec Int p -> URec Int p -> Bool)-> (URec Int p -> URec Int p -> Bool) -> Eq (URec Int p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec Int p -> URec Int p -> Bool$c== :: forall k (p :: k). URec Int p -> URec Int p -> Bool== :: URec Int p -> URec Int p -> Bool$c/= :: forall k (p :: k). URec Int p -> URec Int p -> Bool/= :: URec Int p -> URec Int p -> BoolEq-- ^ @since 4.9.0.0,Eq (URec Int p)Eq (URec Int p) =>(URec Int p -> URec Int p -> Ordering)-> (URec Int p -> URec Int p -> Bool)-> (URec Int p -> URec Int p -> Bool)-> (URec Int p -> URec Int p -> Bool)-> (URec Int p -> URec Int p -> Bool)-> (URec Int p -> URec Int p -> URec Int p)-> (URec Int p -> URec Int p -> URec Int p)-> Ord (URec Int p)URec Int p -> URec Int p -> BoolURec Int p -> URec Int p -> OrderingURec Int p -> URec Int p -> URec Int pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec Int p)forall k (p :: k). URec Int p -> URec Int p -> Boolforall k (p :: k). URec Int p -> URec Int p -> Orderingforall k (p :: k). URec Int p -> URec Int p -> URec Int p$ccompare :: forall k (p :: k). URec Int p -> URec Int p -> Orderingcompare :: URec Int p -> URec Int p -> Ordering$c< :: forall k (p :: k). URec Int p -> URec Int p -> Bool< :: URec Int p -> URec Int p -> Bool$c<= :: forall k (p :: k). URec Int p -> URec Int p -> Bool<= :: URec Int p -> URec Int p -> Bool$c> :: forall k (p :: k). URec Int p -> URec Int p -> Bool> :: URec Int p -> URec Int p -> Bool$c>= :: forall k (p :: k). URec Int p -> URec Int p -> Bool>= :: URec Int p -> URec Int p -> Bool$cmax :: forall k (p :: k). URec Int p -> URec Int p -> URec Int pmax :: URec Int p -> URec Int p -> URec Int p$cmin :: forall k (p :: k). URec Int p -> URec Int p -> URec Int pmin :: URec Int p -> URec Int p -> URec Int pOrd-- ^ @since 4.9.0.0,Int -> URec Int p -> ShowS[URec Int p] -> ShowSURec Int p -> String(Int -> URec Int p -> ShowS)-> (URec Int p -> String)-> ([URec Int p] -> ShowS)-> Show (URec Int p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> URec Int p -> ShowSforall k (p :: k). [URec Int p] -> ShowSforall k (p :: k). URec Int p -> String$cshowsPrec :: forall k (p :: k). Int -> URec Int p -> ShowSshowsPrec :: Int -> URec Int p -> ShowS$cshow :: forall k (p :: k). URec Int p -> Stringshow :: URec Int p -> String$cshowList :: forall k (p :: k). [URec Int p] -> ShowSshowList :: [URec Int p] -> ShowSShow-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> URec Int a -> URec Int b)-> (forall a b. a -> URec Int b -> URec Int a)-> Functor (URec Int)forall a b. a -> URec Int b -> URec Int aforall a b. (a -> b) -> URec Int a -> URec Int bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec Int a -> URec Int bfmap :: forall a b. (a -> b) -> URec Int a -> URec Int b$c<$ :: forall a b. a -> URec Int b -> URec Int a<$ :: forall a b. a -> URec Int b -> URec Int aFunctor-- ^ @since 4.9.0.0,(forall x. URec Int p -> Rep (URec Int p) x)-> (forall x. Rep (URec Int p) x -> URec Int p)-> Generic (URec Int p)forall x. Rep (URec Int p) x -> URec Int pforall x. URec Int p -> Rep (URec Int p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec Int p) x -> URec Int pforall k (p :: k) x. URec Int p -> Rep (URec Int p) x$cfrom :: forall k (p :: k) x. URec Int p -> Rep (URec Int p) xfrom :: forall x. URec Int p -> Rep (URec Int p) x$cto :: forall k (p :: k) x. Rep (URec Int p) x -> URec Int pto :: forall x. Rep (URec Int p) x -> URec Int pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). URec Int a -> Rep1 (URec Int) a)-> (forall (a :: k). Rep1 (URec Int) a -> URec Int a)-> Generic1 (URec Int)forall (a :: k). Rep1 (URec Int) a -> URec Int aforall (a :: k). URec Int a -> Rep1 (URec Int) aforall k (a :: k). Rep1 (URec Int) a -> URec Int aforall k (a :: k). URec Int a -> Rep1 (URec Int) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec Int a -> Rep1 (URec Int) afrom1 :: forall (a :: k). URec Int a -> Rep1 (URec Int) a$cto1 :: forall k (a :: k). Rep1 (URec Int) a -> URec Int ato1 :: forall (a :: k). Rep1 (URec Int) a -> URec Int aGeneric1-- ^ @since 4.9.0.0)-- | Used for marking occurrences of 'Word#'---- @since 4.9.0.0datainstanceURecWord(p::k)=UWord{forall k (p :: k). URec Word p -> Word#uWord#::Word#}deriving(URec Word p -> URec Word p -> Bool(URec Word p -> URec Word p -> Bool)-> (URec Word p -> URec Word p -> Bool) -> Eq (URec Word p)forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq aforall k (p :: k). URec Word p -> URec Word p -> Bool$c== :: forall k (p :: k). URec Word p -> URec Word p -> Bool== :: URec Word p -> URec Word p -> Bool$c/= :: forall k (p :: k). URec Word p -> URec Word p -> Bool/= :: URec Word p -> URec Word p -> BoolEq-- ^ @since 4.9.0.0,Eq (URec Word p)Eq (URec Word p) =>(URec Word p -> URec Word p -> Ordering)-> (URec Word p -> URec Word p -> Bool)-> (URec Word p -> URec Word p -> Bool)-> (URec Word p -> URec Word p -> Bool)-> (URec Word p -> URec Word p -> Bool)-> (URec Word p -> URec Word p -> URec Word p)-> (URec Word p -> URec Word p -> URec Word p)-> Ord (URec Word p)URec Word p -> URec Word p -> BoolURec Word p -> URec Word p -> OrderingURec Word p -> URec Word p -> URec Word pforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord aforall k (p :: k). Eq (URec Word p)forall k (p :: k). URec Word p -> URec Word p -> Boolforall k (p :: k). URec Word p -> URec Word p -> Orderingforall k (p :: k). URec Word p -> URec Word p -> URec Word p$ccompare :: forall k (p :: k). URec Word p -> URec Word p -> Orderingcompare :: URec Word p -> URec Word p -> Ordering$c< :: forall k (p :: k). URec Word p -> URec Word p -> Bool< :: URec Word p -> URec Word p -> Bool$c<= :: forall k (p :: k). URec Word p -> URec Word p -> Bool<= :: URec Word p -> URec Word p -> Bool$c> :: forall k (p :: k). URec Word p -> URec Word p -> Bool> :: URec Word p -> URec Word p -> Bool$c>= :: forall k (p :: k). URec Word p -> URec Word p -> Bool>= :: URec Word p -> URec Word p -> Bool$cmax :: forall k (p :: k). URec Word p -> URec Word p -> URec Word pmax :: URec Word p -> URec Word p -> URec Word p$cmin :: forall k (p :: k). URec Word p -> URec Word p -> URec Word pmin :: URec Word p -> URec Word p -> URec Word pOrd-- ^ @since 4.9.0.0,Int -> URec Word p -> ShowS[URec Word p] -> ShowSURec Word p -> String(Int -> URec Word p -> ShowS)-> (URec Word p -> String)-> ([URec Word p] -> ShowS)-> Show (URec Word p)forall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show aforall k (p :: k). Int -> URec Word p -> ShowSforall k (p :: k). [URec Word p] -> ShowSforall k (p :: k). URec Word p -> String$cshowsPrec :: forall k (p :: k). Int -> URec Word p -> ShowSshowsPrec :: Int -> URec Word p -> ShowS$cshow :: forall k (p :: k). URec Word p -> Stringshow :: URec Word p -> String$cshowList :: forall k (p :: k). [URec Word p] -> ShowSshowList :: [URec Word p] -> ShowSShow-- ^ @since 4.9.0.0,(forall a b. (a -> b) -> URec Word a -> URec Word b)-> (forall a b. a -> URec Word b -> URec Word a)-> Functor (URec Word)forall a b. a -> URec Word b -> URec Word aforall a b. (a -> b) -> URec Word a -> URec Word bforall (f :: * -> *).(forall a b. (a -> b) -> f a -> f b)-> (forall a b. a -> f b -> f a) -> Functor f$cfmap :: forall a b. (a -> b) -> URec Word a -> URec Word bfmap :: forall a b. (a -> b) -> URec Word a -> URec Word b$c<$ :: forall a b. a -> URec Word b -> URec Word a<$ :: forall a b. a -> URec Word b -> URec Word aFunctor-- ^ @since 4.9.0.0,(forall x. URec Word p -> Rep (URec Word p) x)-> (forall x. Rep (URec Word p) x -> URec Word p)-> Generic (URec Word p)forall x. Rep (URec Word p) x -> URec Word pforall x. URec Word p -> Rep (URec Word p) xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic aforall k (p :: k) x. Rep (URec Word p) x -> URec Word pforall k (p :: k) x. URec Word p -> Rep (URec Word p) x$cfrom :: forall k (p :: k) x. URec Word p -> Rep (URec Word p) xfrom :: forall x. URec Word p -> Rep (URec Word p) x$cto :: forall k (p :: k) x. Rep (URec Word p) x -> URec Word pto :: forall x. Rep (URec Word p) x -> URec Word pGeneric-- ^ @since 4.9.0.0,(forall (a :: k). URec Word a -> Rep1 (URec Word) a)-> (forall (a :: k). Rep1 (URec Word) a -> URec Word a)-> Generic1 (URec Word)forall (a :: k). Rep1 (URec Word) a -> URec Word aforall (a :: k). URec Word a -> Rep1 (URec Word) aforall k (a :: k). Rep1 (URec Word) a -> URec Word aforall k (a :: k). URec Word a -> Rep1 (URec Word) aforall k (f :: k -> *).(forall (a :: k). f a -> Rep1 f a)-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f$cfrom1 :: forall k (a :: k). URec Word a -> Rep1 (URec Word) afrom1 :: forall (a :: k). URec Word a -> Rep1 (URec Word) a$cto1 :: forall k (a :: k). Rep1 (URec Word) a -> URec Word ato1 :: forall (a :: k). Rep1 (URec Word) a -> URec Word aGeneric1-- ^ @since 4.9.0.0)-- | Type synonym for @'URec' 'Addr#'@---- @since 4.9.0.0typeUAddr=URec(Ptr())-- | Type synonym for @'URec' 'Char#'@---- @since 4.9.0.0typeUChar=URecChar-- | Type synonym for @'URec' 'Double#'@---- @since 4.9.0.0typeUDouble=URecDouble-- | Type synonym for @'URec' 'Float#'@---- @since 4.9.0.0typeUFloat=URecFloat-- | Type synonym for @'URec' 'Int#'@---- @since 4.9.0.0typeUInt=URecInt-- | Type synonym for @'URec' 'Word#'@---- @since 4.9.0.0typeUWord=URecWord-- | Tag for K1: recursion (of kind @Type@)dataR-- | Type synonym for encoding recursion (of kind @Type@)typeRec0=K1R-- | Tag for M1: datatypedataD-- | Tag for M1: constructordataC-- | Tag for M1: record selectordataS-- | Type synonym for encoding meta-information for datatypestypeD1=M1D-- | Type synonym for encoding meta-information for constructorstypeC1=M1C-- | Type synonym for encoding meta-information for record selectorstypeS1=M1S-- | Class for datatypes that represent datatypesclassDatatypedwhere-- | The name of the datatype (unqualified)datatypeName::td(f::k->Type)(a::k)->[Char]-- | The fully-qualified name of the module where the type is declaredmoduleName::td(f::k->Type)(a::k)->[Char]-- | The package name of the module where the type is declared---- @since 4.9.0.0packageName::td(f::k->Type)(a::k)->[Char]-- | Marks if the datatype is actually a newtype---- @since 4.7.0.0isNewtype::td(f::k->Type)(a::k)->BoolisNewtypet d f a_=BoolFalse-- | @since 4.9.0.0instance(KnownSymboln,KnownSymbolm,KnownSymbolp,SingInt)=>Datatype('MetaDatanmpnt)wheredatatypeName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaData n m p nt) f a -> StringdatatypeNamet ('MetaData n m p nt) f a_=Proxy n -> Stringforall (n :: Symbol) (proxy :: Symbol -> *).KnownSymbol n =>proxy n -> StringsymbolVal(Proxy nforall {k} (t :: k). Proxy tProxy::Proxyn)moduleName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaData n m p nt) f a -> StringmoduleNamet ('MetaData n m p nt) f a_=Proxy m -> Stringforall (n :: Symbol) (proxy :: Symbol -> *).KnownSymbol n =>proxy n -> StringsymbolVal(Proxy mforall {k} (t :: k). Proxy tProxy::Proxym)packageName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaData n m p nt) f a -> StringpackageNamet ('MetaData n m p nt) f a_=Proxy p -> Stringforall (n :: Symbol) (proxy :: Symbol -> *).KnownSymbol n =>proxy n -> StringsymbolVal(Proxy pforall {k} (t :: k). Proxy tProxy::Proxyp)isNewtype :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaData n m p nt) f a -> BoolisNewtypet ('MetaData n m p nt) f a_=Sing nt -> DemoteRep Boolforall (a :: Bool). Sing a -> DemoteRep Boolforall k (a :: k). SingKind k => Sing a -> DemoteRep kfromSing(Sing ntforall k (a :: k). SingI a => Sing asing::Singnt)-- | Class for datatypes that represent data constructorsclassConstructorcwhere-- | The name of the constructorconName::tc(f::k->Type)(a::k)->[Char]-- | The fixity of the constructorconFixity::tc(f::k->Type)(a::k)->FixityconFixityt c f a_=FixityPrefix-- | Marks if this constructor is a recordconIsRecord::tc(f::k->Type)(a::k)->BoolconIsRecordt c f a_=BoolFalse-- | @since 4.9.0.0instance(KnownSymboln,SingIf,SingIr)=>Constructor('MetaConsnfr)whereconName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaCons n f r) f a -> StringconNamet ('MetaCons n f r) f a_=Proxy n -> Stringforall (n :: Symbol) (proxy :: Symbol -> *).KnownSymbol n =>proxy n -> StringsymbolVal(Proxy nforall {k} (t :: k). Proxy tProxy::Proxyn)conFixity :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaCons n f r) f a -> FixityconFixityt ('MetaCons n f r) f a_=Sing f -> DemoteRep FixityIforall k (a :: k). SingKind k => Sing a -> DemoteRep kforall (a :: FixityI). Sing a -> DemoteRep FixityIfromSing(Sing fforall k (a :: k). SingI a => Sing asing::Singf)conIsRecord :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaCons n f r) f a -> BoolconIsRecordt ('MetaCons n f r) f a_=Sing r -> DemoteRep Boolforall (a :: Bool). Sing a -> DemoteRep Boolforall k (a :: k). SingKind k => Sing a -> DemoteRep kfromSing(Sing rforall k (a :: k). SingI a => Sing asing::Singr)-- | Datatype to represent the fixity of a constructor. An infix-- | declaration directly corresponds to an application of 'Infix'.dataFixity=Prefix|InfixAssociativityIntderiving(Fixity -> Fixity -> Bool(Fixity -> Fixity -> Bool)-> (Fixity -> Fixity -> Bool) -> Eq Fixityforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: Fixity -> Fixity -> Bool== :: Fixity -> Fixity -> Bool$c/= :: Fixity -> Fixity -> Bool/= :: Fixity -> Fixity -> BoolEq-- ^ @since 4.6.0.0,Int -> Fixity -> ShowS[Fixity] -> ShowSFixity -> String(Int -> Fixity -> ShowS)-> (Fixity -> String) -> ([Fixity] -> ShowS) -> Show Fixityforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: Int -> Fixity -> ShowSshowsPrec :: Int -> Fixity -> ShowS$cshow :: Fixity -> Stringshow :: Fixity -> String$cshowList :: [Fixity] -> ShowSshowList :: [Fixity] -> ShowSShow-- ^ @since 4.6.0.0,Eq FixityEq Fixity =>(Fixity -> Fixity -> Ordering)-> (Fixity -> Fixity -> Bool)-> (Fixity -> Fixity -> Bool)-> (Fixity -> Fixity -> Bool)-> (Fixity -> Fixity -> Bool)-> (Fixity -> Fixity -> Fixity)-> (Fixity -> Fixity -> Fixity)-> Ord FixityFixity -> Fixity -> BoolFixity -> Fixity -> OrderingFixity -> Fixity -> Fixityforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord a$ccompare :: Fixity -> Fixity -> Orderingcompare :: Fixity -> Fixity -> Ordering$c< :: Fixity -> Fixity -> Bool< :: Fixity -> Fixity -> Bool$c<= :: Fixity -> Fixity -> Bool<= :: Fixity -> Fixity -> Bool$c> :: Fixity -> Fixity -> Bool> :: Fixity -> Fixity -> Bool$c>= :: Fixity -> Fixity -> Bool>= :: Fixity -> Fixity -> Bool$cmax :: Fixity -> Fixity -> Fixitymax :: Fixity -> Fixity -> Fixity$cmin :: Fixity -> Fixity -> Fixitymin :: Fixity -> Fixity -> FixityOrd-- ^ @since 4.6.0.0,ReadPrec [Fixity]ReadPrec FixityInt -> ReadS FixityReadS [Fixity](Int -> ReadS Fixity)-> ReadS [Fixity]-> ReadPrec Fixity-> ReadPrec [Fixity]-> Read Fixityforall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: Int -> ReadS FixityreadsPrec :: Int -> ReadS Fixity$creadList :: ReadS [Fixity]readList :: ReadS [Fixity]$creadPrec :: ReadPrec FixityreadPrec :: ReadPrec Fixity$creadListPrec :: ReadPrec [Fixity]readListPrec :: ReadPrec [Fixity]Read-- ^ @since 4.6.0.0,(forall x. Fixity -> Rep Fixity x)-> (forall x. Rep Fixity x -> Fixity) -> Generic Fixityforall x. Rep Fixity x -> Fixityforall x. Fixity -> Rep Fixity xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a$cfrom :: forall x. Fixity -> Rep Fixity xfrom :: forall x. Fixity -> Rep Fixity x$cto :: forall x. Rep Fixity x -> Fixityto :: forall x. Rep Fixity x -> FixityGeneric-- ^ @since 4.7.0.0)-- | This variant of 'Fixity' appears at the type level.---- @since 4.9.0.0dataFixityI=PrefixI|InfixIAssociativityNat-- | Get the precedence of a fixity value.prec::Fixity->Intprec :: Fixity -> IntprecFixityPrefix=Int10prec(InfixAssociativity_Intn)=Intn-- | Datatype to represent the associativity of a constructordataAssociativity=LeftAssociative|RightAssociative|NotAssociativederiving(Associativity -> Associativity -> Bool(Associativity -> Associativity -> Bool)-> (Associativity -> Associativity -> Bool) -> Eq Associativityforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: Associativity -> Associativity -> Bool== :: Associativity -> Associativity -> Bool$c/= :: Associativity -> Associativity -> Bool/= :: Associativity -> Associativity -> BoolEq-- ^ @since 4.6.0.0,Int -> Associativity -> ShowS[Associativity] -> ShowSAssociativity -> String(Int -> Associativity -> ShowS)-> (Associativity -> String)-> ([Associativity] -> ShowS)-> Show Associativityforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: Int -> Associativity -> ShowSshowsPrec :: Int -> Associativity -> ShowS$cshow :: Associativity -> Stringshow :: Associativity -> String$cshowList :: [Associativity] -> ShowSshowList :: [Associativity] -> ShowSShow-- ^ @since 4.6.0.0,Eq AssociativityEq Associativity =>(Associativity -> Associativity -> Ordering)-> (Associativity -> Associativity -> Bool)-> (Associativity -> Associativity -> Bool)-> (Associativity -> Associativity -> Bool)-> (Associativity -> Associativity -> Bool)-> (Associativity -> Associativity -> Associativity)-> (Associativity -> Associativity -> Associativity)-> Ord AssociativityAssociativity -> Associativity -> BoolAssociativity -> Associativity -> OrderingAssociativity -> Associativity -> Associativityforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord a$ccompare :: Associativity -> Associativity -> Orderingcompare :: Associativity -> Associativity -> Ordering$c< :: Associativity -> Associativity -> Bool< :: Associativity -> Associativity -> Bool$c<= :: Associativity -> Associativity -> Bool<= :: Associativity -> Associativity -> Bool$c> :: Associativity -> Associativity -> Bool> :: Associativity -> Associativity -> Bool$c>= :: Associativity -> Associativity -> Bool>= :: Associativity -> Associativity -> Bool$cmax :: Associativity -> Associativity -> Associativitymax :: Associativity -> Associativity -> Associativity$cmin :: Associativity -> Associativity -> Associativitymin :: Associativity -> Associativity -> AssociativityOrd-- ^ @since 4.6.0.0,ReadPrec [Associativity]ReadPrec AssociativityInt -> ReadS AssociativityReadS [Associativity](Int -> ReadS Associativity)-> ReadS [Associativity]-> ReadPrec Associativity-> ReadPrec [Associativity]-> Read Associativityforall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: Int -> ReadS AssociativityreadsPrec :: Int -> ReadS Associativity$creadList :: ReadS [Associativity]readList :: ReadS [Associativity]$creadPrec :: ReadPrec AssociativityreadPrec :: ReadPrec Associativity$creadListPrec :: ReadPrec [Associativity]readListPrec :: ReadPrec [Associativity]Read-- ^ @since 4.6.0.0,Int -> AssociativityAssociativity -> IntAssociativity -> [Associativity]Associativity -> AssociativityAssociativity -> Associativity -> [Associativity]Associativity -> Associativity -> Associativity -> [Associativity](Associativity -> Associativity)-> (Associativity -> Associativity)-> (Int -> Associativity)-> (Associativity -> Int)-> (Associativity -> [Associativity])-> (Associativity -> Associativity -> [Associativity])-> (Associativity -> Associativity -> [Associativity])-> (Associativity    -> Associativity -> Associativity -> [Associativity])-> Enum Associativityforall a.(a -> a)-> (a -> a)-> (Int -> a)-> (a -> Int)-> (a -> [a])-> (a -> a -> [a])-> (a -> a -> [a])-> (a -> a -> a -> [a])-> Enum a$csucc :: Associativity -> Associativitysucc :: Associativity -> Associativity$cpred :: Associativity -> Associativitypred :: Associativity -> Associativity$ctoEnum :: Int -> AssociativitytoEnum :: Int -> Associativity$cfromEnum :: Associativity -> IntfromEnum :: Associativity -> Int$cenumFrom :: Associativity -> [Associativity]enumFrom :: Associativity -> [Associativity]$cenumFromThen :: Associativity -> Associativity -> [Associativity]enumFromThen :: Associativity -> Associativity -> [Associativity]$cenumFromTo :: Associativity -> Associativity -> [Associativity]enumFromTo :: Associativity -> Associativity -> [Associativity]$cenumFromThenTo :: Associativity -> Associativity -> Associativity -> [Associativity]enumFromThenTo :: Associativity -> Associativity -> Associativity -> [Associativity]Enum-- ^ @since 4.9.0.0,AssociativityAssociativity -> Associativity -> Bounded Associativityforall a. a -> a -> Bounded a$cminBound :: AssociativityminBound :: Associativity$cmaxBound :: AssociativitymaxBound :: AssociativityBounded-- ^ @since 4.9.0.0,Ord AssociativityOrd Associativity =>((Associativity, Associativity) -> [Associativity])-> ((Associativity, Associativity) -> Associativity -> Int)-> ((Associativity, Associativity) -> Associativity -> Int)-> ((Associativity, Associativity) -> Associativity -> Bool)-> ((Associativity, Associativity) -> Int)-> ((Associativity, Associativity) -> Int)-> Ix Associativity(Associativity, Associativity) -> Int(Associativity, Associativity) -> [Associativity](Associativity, Associativity) -> Associativity -> Bool(Associativity, Associativity) -> Associativity -> Intforall a.Ord a =>((a, a) -> [a])-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Bool)-> ((a, a) -> Int)-> ((a, a) -> Int)-> Ix a$crange :: (Associativity, Associativity) -> [Associativity]range :: (Associativity, Associativity) -> [Associativity]$cindex :: (Associativity, Associativity) -> Associativity -> Intindex :: (Associativity, Associativity) -> Associativity -> Int$cunsafeIndex :: (Associativity, Associativity) -> Associativity -> IntunsafeIndex :: (Associativity, Associativity) -> Associativity -> Int$cinRange :: (Associativity, Associativity) -> Associativity -> BoolinRange :: (Associativity, Associativity) -> Associativity -> Bool$crangeSize :: (Associativity, Associativity) -> IntrangeSize :: (Associativity, Associativity) -> Int$cunsafeRangeSize :: (Associativity, Associativity) -> IntunsafeRangeSize :: (Associativity, Associativity) -> IntIx-- ^ @since 4.9.0.0,(forall x. Associativity -> Rep Associativity x)-> (forall x. Rep Associativity x -> Associativity)-> Generic Associativityforall x. Rep Associativity x -> Associativityforall x. Associativity -> Rep Associativity xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a$cfrom :: forall x. Associativity -> Rep Associativity xfrom :: forall x. Associativity -> Rep Associativity x$cto :: forall x. Rep Associativity x -> Associativityto :: forall x. Rep Associativity x -> AssociativityGeneric-- ^ @since 4.7.0.0)-- | The unpackedness of a field as the user wrote it in the source code. For-- example, in the following data type:---- @-- data E = ExampleConstructor     Int--            {\-\# NOUNPACK \#-\} Int--            {\-\#   UNPACK \#-\} Int-- @---- The fields of @ExampleConstructor@ have 'NoSourceUnpackedness',-- 'SourceNoUnpack', and 'SourceUnpack', respectively.---- @since 4.9.0.0dataSourceUnpackedness=NoSourceUnpackedness|SourceNoUnpack|SourceUnpackderiving(SourceUnpackedness -> SourceUnpackedness -> Bool(SourceUnpackedness -> SourceUnpackedness -> Bool)-> (SourceUnpackedness -> SourceUnpackedness -> Bool)-> Eq SourceUnpackednessforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: SourceUnpackedness -> SourceUnpackedness -> Bool== :: SourceUnpackedness -> SourceUnpackedness -> Bool$c/= :: SourceUnpackedness -> SourceUnpackedness -> Bool/= :: SourceUnpackedness -> SourceUnpackedness -> BoolEq-- ^ @since 4.9.0.0,Int -> SourceUnpackedness -> ShowS[SourceUnpackedness] -> ShowSSourceUnpackedness -> String(Int -> SourceUnpackedness -> ShowS)-> (SourceUnpackedness -> String)-> ([SourceUnpackedness] -> ShowS)-> Show SourceUnpackednessforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: Int -> SourceUnpackedness -> ShowSshowsPrec :: Int -> SourceUnpackedness -> ShowS$cshow :: SourceUnpackedness -> Stringshow :: SourceUnpackedness -> String$cshowList :: [SourceUnpackedness] -> ShowSshowList :: [SourceUnpackedness] -> ShowSShow-- ^ @since 4.9.0.0,Eq SourceUnpackednessEq SourceUnpackedness =>(SourceUnpackedness -> SourceUnpackedness -> Ordering)-> (SourceUnpackedness -> SourceUnpackedness -> Bool)-> (SourceUnpackedness -> SourceUnpackedness -> Bool)-> (SourceUnpackedness -> SourceUnpackedness -> Bool)-> (SourceUnpackedness -> SourceUnpackedness -> Bool)-> (SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness)-> (SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness)-> Ord SourceUnpackednessSourceUnpackedness -> SourceUnpackedness -> BoolSourceUnpackedness -> SourceUnpackedness -> OrderingSourceUnpackedness -> SourceUnpackedness -> SourceUnpackednessforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord a$ccompare :: SourceUnpackedness -> SourceUnpackedness -> Orderingcompare :: SourceUnpackedness -> SourceUnpackedness -> Ordering$c< :: SourceUnpackedness -> SourceUnpackedness -> Bool< :: SourceUnpackedness -> SourceUnpackedness -> Bool$c<= :: SourceUnpackedness -> SourceUnpackedness -> Bool<= :: SourceUnpackedness -> SourceUnpackedness -> Bool$c> :: SourceUnpackedness -> SourceUnpackedness -> Bool> :: SourceUnpackedness -> SourceUnpackedness -> Bool$c>= :: SourceUnpackedness -> SourceUnpackedness -> Bool>= :: SourceUnpackedness -> SourceUnpackedness -> Bool$cmax :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackednessmax :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness$cmin :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackednessmin :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackednessOrd-- ^ @since 4.9.0.0,ReadPrec [SourceUnpackedness]ReadPrec SourceUnpackednessInt -> ReadS SourceUnpackednessReadS [SourceUnpackedness](Int -> ReadS SourceUnpackedness)-> ReadS [SourceUnpackedness]-> ReadPrec SourceUnpackedness-> ReadPrec [SourceUnpackedness]-> Read SourceUnpackednessforall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: Int -> ReadS SourceUnpackednessreadsPrec :: Int -> ReadS SourceUnpackedness$creadList :: ReadS [SourceUnpackedness]readList :: ReadS [SourceUnpackedness]$creadPrec :: ReadPrec SourceUnpackednessreadPrec :: ReadPrec SourceUnpackedness$creadListPrec :: ReadPrec [SourceUnpackedness]readListPrec :: ReadPrec [SourceUnpackedness]Read-- ^ @since 4.9.0.0,Int -> SourceUnpackednessSourceUnpackedness -> IntSourceUnpackedness -> [SourceUnpackedness]SourceUnpackedness -> SourceUnpackednessSourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]SourceUnpackedness-> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness](SourceUnpackedness -> SourceUnpackedness)-> (SourceUnpackedness -> SourceUnpackedness)-> (Int -> SourceUnpackedness)-> (SourceUnpackedness -> Int)-> (SourceUnpackedness -> [SourceUnpackedness])-> (SourceUnpackedness    -> SourceUnpackedness -> [SourceUnpackedness])-> (SourceUnpackedness    -> SourceUnpackedness -> [SourceUnpackedness])-> (SourceUnpackedness    -> SourceUnpackedness    -> SourceUnpackedness    -> [SourceUnpackedness])-> Enum SourceUnpackednessforall a.(a -> a)-> (a -> a)-> (Int -> a)-> (a -> Int)-> (a -> [a])-> (a -> a -> [a])-> (a -> a -> [a])-> (a -> a -> a -> [a])-> Enum a$csucc :: SourceUnpackedness -> SourceUnpackednesssucc :: SourceUnpackedness -> SourceUnpackedness$cpred :: SourceUnpackedness -> SourceUnpackednesspred :: SourceUnpackedness -> SourceUnpackedness$ctoEnum :: Int -> SourceUnpackednesstoEnum :: Int -> SourceUnpackedness$cfromEnum :: SourceUnpackedness -> IntfromEnum :: SourceUnpackedness -> Int$cenumFrom :: SourceUnpackedness -> [SourceUnpackedness]enumFrom :: SourceUnpackedness -> [SourceUnpackedness]$cenumFromThen :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]enumFromThen :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]$cenumFromTo :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]enumFromTo :: SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]$cenumFromThenTo :: SourceUnpackedness-> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]enumFromThenTo :: SourceUnpackedness-> SourceUnpackedness -> SourceUnpackedness -> [SourceUnpackedness]Enum-- ^ @since 4.9.0.0,SourceUnpackednessSourceUnpackedness-> SourceUnpackedness -> Bounded SourceUnpackednessforall a. a -> a -> Bounded a$cminBound :: SourceUnpackednessminBound :: SourceUnpackedness$cmaxBound :: SourceUnpackednessmaxBound :: SourceUnpackednessBounded-- ^ @since 4.9.0.0,Ord SourceUnpackednessOrd SourceUnpackedness =>((SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness])-> ((SourceUnpackedness, SourceUnpackedness)    -> SourceUnpackedness -> Int)-> ((SourceUnpackedness, SourceUnpackedness)    -> SourceUnpackedness -> Int)-> ((SourceUnpackedness, SourceUnpackedness)    -> SourceUnpackedness -> Bool)-> ((SourceUnpackedness, SourceUnpackedness) -> Int)-> ((SourceUnpackedness, SourceUnpackedness) -> Int)-> Ix SourceUnpackedness(SourceUnpackedness, SourceUnpackedness) -> Int(SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness](SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Bool(SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Intforall a.Ord a =>((a, a) -> [a])-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Bool)-> ((a, a) -> Int)-> ((a, a) -> Int)-> Ix a$crange :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness]range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness]$cindex :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Intindex :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Int$cunsafeIndex :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> IntunsafeIndex :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Int$cinRange :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> BoolinRange :: (SourceUnpackedness, SourceUnpackedness)-> SourceUnpackedness -> Bool$crangeSize :: (SourceUnpackedness, SourceUnpackedness) -> IntrangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int$cunsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> IntunsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> IntIx-- ^ @since 4.9.0.0,(forall x. SourceUnpackedness -> Rep SourceUnpackedness x)-> (forall x. Rep SourceUnpackedness x -> SourceUnpackedness)-> Generic SourceUnpackednessforall x. Rep SourceUnpackedness x -> SourceUnpackednessforall x. SourceUnpackedness -> Rep SourceUnpackedness xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a$cfrom :: forall x. SourceUnpackedness -> Rep SourceUnpackedness xfrom :: forall x. SourceUnpackedness -> Rep SourceUnpackedness x$cto :: forall x. Rep SourceUnpackedness x -> SourceUnpackednessto :: forall x. Rep SourceUnpackedness x -> SourceUnpackednessGeneric-- ^ @since 4.9.0.0)-- | The strictness of a field as the user wrote it in the source code. For-- example, in the following data type:---- @-- data E = ExampleConstructor Int ~Int !Int-- @---- The fields of @ExampleConstructor@ have 'NoSourceStrictness',-- 'SourceLazy', and 'SourceStrict', respectively.---- @since 4.9.0.0dataSourceStrictness=NoSourceStrictness|SourceLazy|SourceStrictderiving(SourceStrictness -> SourceStrictness -> Bool(SourceStrictness -> SourceStrictness -> Bool)-> (SourceStrictness -> SourceStrictness -> Bool)-> Eq SourceStrictnessforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: SourceStrictness -> SourceStrictness -> Bool== :: SourceStrictness -> SourceStrictness -> Bool$c/= :: SourceStrictness -> SourceStrictness -> Bool/= :: SourceStrictness -> SourceStrictness -> BoolEq-- ^ @since 4.9.0.0,Int -> SourceStrictness -> ShowS[SourceStrictness] -> ShowSSourceStrictness -> String(Int -> SourceStrictness -> ShowS)-> (SourceStrictness -> String)-> ([SourceStrictness] -> ShowS)-> Show SourceStrictnessforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: Int -> SourceStrictness -> ShowSshowsPrec :: Int -> SourceStrictness -> ShowS$cshow :: SourceStrictness -> Stringshow :: SourceStrictness -> String$cshowList :: [SourceStrictness] -> ShowSshowList :: [SourceStrictness] -> ShowSShow-- ^ @since 4.9.0.0,Eq SourceStrictnessEq SourceStrictness =>(SourceStrictness -> SourceStrictness -> Ordering)-> (SourceStrictness -> SourceStrictness -> Bool)-> (SourceStrictness -> SourceStrictness -> Bool)-> (SourceStrictness -> SourceStrictness -> Bool)-> (SourceStrictness -> SourceStrictness -> Bool)-> (SourceStrictness -> SourceStrictness -> SourceStrictness)-> (SourceStrictness -> SourceStrictness -> SourceStrictness)-> Ord SourceStrictnessSourceStrictness -> SourceStrictness -> BoolSourceStrictness -> SourceStrictness -> OrderingSourceStrictness -> SourceStrictness -> SourceStrictnessforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord a$ccompare :: SourceStrictness -> SourceStrictness -> Orderingcompare :: SourceStrictness -> SourceStrictness -> Ordering$c< :: SourceStrictness -> SourceStrictness -> Bool< :: SourceStrictness -> SourceStrictness -> Bool$c<= :: SourceStrictness -> SourceStrictness -> Bool<= :: SourceStrictness -> SourceStrictness -> Bool$c> :: SourceStrictness -> SourceStrictness -> Bool> :: SourceStrictness -> SourceStrictness -> Bool$c>= :: SourceStrictness -> SourceStrictness -> Bool>= :: SourceStrictness -> SourceStrictness -> Bool$cmax :: SourceStrictness -> SourceStrictness -> SourceStrictnessmax :: SourceStrictness -> SourceStrictness -> SourceStrictness$cmin :: SourceStrictness -> SourceStrictness -> SourceStrictnessmin :: SourceStrictness -> SourceStrictness -> SourceStrictnessOrd-- ^ @since 4.9.0.0,ReadPrec [SourceStrictness]ReadPrec SourceStrictnessInt -> ReadS SourceStrictnessReadS [SourceStrictness](Int -> ReadS SourceStrictness)-> ReadS [SourceStrictness]-> ReadPrec SourceStrictness-> ReadPrec [SourceStrictness]-> Read SourceStrictnessforall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: Int -> ReadS SourceStrictnessreadsPrec :: Int -> ReadS SourceStrictness$creadList :: ReadS [SourceStrictness]readList :: ReadS [SourceStrictness]$creadPrec :: ReadPrec SourceStrictnessreadPrec :: ReadPrec SourceStrictness$creadListPrec :: ReadPrec [SourceStrictness]readListPrec :: ReadPrec [SourceStrictness]Read-- ^ @since 4.9.0.0,Int -> SourceStrictnessSourceStrictness -> IntSourceStrictness -> [SourceStrictness]SourceStrictness -> SourceStrictnessSourceStrictness -> SourceStrictness -> [SourceStrictness]SourceStrictness-> SourceStrictness -> SourceStrictness -> [SourceStrictness](SourceStrictness -> SourceStrictness)-> (SourceStrictness -> SourceStrictness)-> (Int -> SourceStrictness)-> (SourceStrictness -> Int)-> (SourceStrictness -> [SourceStrictness])-> (SourceStrictness -> SourceStrictness -> [SourceStrictness])-> (SourceStrictness -> SourceStrictness -> [SourceStrictness])-> (SourceStrictness    -> SourceStrictness -> SourceStrictness -> [SourceStrictness])-> Enum SourceStrictnessforall a.(a -> a)-> (a -> a)-> (Int -> a)-> (a -> Int)-> (a -> [a])-> (a -> a -> [a])-> (a -> a -> [a])-> (a -> a -> a -> [a])-> Enum a$csucc :: SourceStrictness -> SourceStrictnesssucc :: SourceStrictness -> SourceStrictness$cpred :: SourceStrictness -> SourceStrictnesspred :: SourceStrictness -> SourceStrictness$ctoEnum :: Int -> SourceStrictnesstoEnum :: Int -> SourceStrictness$cfromEnum :: SourceStrictness -> IntfromEnum :: SourceStrictness -> Int$cenumFrom :: SourceStrictness -> [SourceStrictness]enumFrom :: SourceStrictness -> [SourceStrictness]$cenumFromThen :: SourceStrictness -> SourceStrictness -> [SourceStrictness]enumFromThen :: SourceStrictness -> SourceStrictness -> [SourceStrictness]$cenumFromTo :: SourceStrictness -> SourceStrictness -> [SourceStrictness]enumFromTo :: SourceStrictness -> SourceStrictness -> [SourceStrictness]$cenumFromThenTo :: SourceStrictness-> SourceStrictness -> SourceStrictness -> [SourceStrictness]enumFromThenTo :: SourceStrictness-> SourceStrictness -> SourceStrictness -> [SourceStrictness]Enum-- ^ @since 4.9.0.0,SourceStrictnessSourceStrictness -> SourceStrictness -> Bounded SourceStrictnessforall a. a -> a -> Bounded a$cminBound :: SourceStrictnessminBound :: SourceStrictness$cmaxBound :: SourceStrictnessmaxBound :: SourceStrictnessBounded-- ^ @since 4.9.0.0,Ord SourceStrictnessOrd SourceStrictness =>((SourceStrictness, SourceStrictness) -> [SourceStrictness])-> ((SourceStrictness, SourceStrictness)    -> SourceStrictness -> Int)-> ((SourceStrictness, SourceStrictness)    -> SourceStrictness -> Int)-> ((SourceStrictness, SourceStrictness)    -> SourceStrictness -> Bool)-> ((SourceStrictness, SourceStrictness) -> Int)-> ((SourceStrictness, SourceStrictness) -> Int)-> Ix SourceStrictness(SourceStrictness, SourceStrictness) -> Int(SourceStrictness, SourceStrictness) -> [SourceStrictness](SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool(SourceStrictness, SourceStrictness) -> SourceStrictness -> Intforall a.Ord a =>((a, a) -> [a])-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Bool)-> ((a, a) -> Int)-> ((a, a) -> Int)-> Ix a$crange :: (SourceStrictness, SourceStrictness) -> [SourceStrictness]range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness]$cindex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Intindex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int$cunsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> IntunsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int$cinRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> BoolinRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool$crangeSize :: (SourceStrictness, SourceStrictness) -> IntrangeSize :: (SourceStrictness, SourceStrictness) -> Int$cunsafeRangeSize :: (SourceStrictness, SourceStrictness) -> IntunsafeRangeSize :: (SourceStrictness, SourceStrictness) -> IntIx-- ^ @since 4.9.0.0,(forall x. SourceStrictness -> Rep SourceStrictness x)-> (forall x. Rep SourceStrictness x -> SourceStrictness)-> Generic SourceStrictnessforall x. Rep SourceStrictness x -> SourceStrictnessforall x. SourceStrictness -> Rep SourceStrictness xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a$cfrom :: forall x. SourceStrictness -> Rep SourceStrictness xfrom :: forall x. SourceStrictness -> Rep SourceStrictness x$cto :: forall x. Rep SourceStrictness x -> SourceStrictnessto :: forall x. Rep SourceStrictness x -> SourceStrictnessGeneric-- ^ @since 4.9.0.0)-- | The strictness that GHC infers for a field during compilation. Whereas-- there are nine different combinations of 'SourceUnpackedness' and-- 'SourceStrictness', the strictness that GHC decides will ultimately be one-- of lazy, strict, or unpacked. What GHC decides is affected both by what the-- user writes in the source code and by GHC flags. As an example, consider-- this data type:---- @-- data E = ExampleConstructor {\-\# UNPACK \#-\} !Int !Int Int-- @---- * If compiled without optimization or other language extensions, then the--   fields of @ExampleConstructor@ will have 'DecidedStrict', 'DecidedStrict',--   and 'DecidedLazy', respectively.---- * If compiled with @-XStrictData@ enabled, then the fields will have--   'DecidedStrict', 'DecidedStrict', and 'DecidedStrict', respectively.---- * If compiled with @-O2@ enabled, then the fields will have 'DecidedUnpack',--   'DecidedStrict', and 'DecidedLazy', respectively.---- @since 4.9.0.0dataDecidedStrictness=DecidedLazy|DecidedStrict|DecidedUnpackderiving(DecidedStrictness -> DecidedStrictness -> Bool(DecidedStrictness -> DecidedStrictness -> Bool)-> (DecidedStrictness -> DecidedStrictness -> Bool)-> Eq DecidedStrictnessforall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a$c== :: DecidedStrictness -> DecidedStrictness -> Bool== :: DecidedStrictness -> DecidedStrictness -> Bool$c/= :: DecidedStrictness -> DecidedStrictness -> Bool/= :: DecidedStrictness -> DecidedStrictness -> BoolEq-- ^ @since 4.9.0.0,Int -> DecidedStrictness -> ShowS[DecidedStrictness] -> ShowSDecidedStrictness -> String(Int -> DecidedStrictness -> ShowS)-> (DecidedStrictness -> String)-> ([DecidedStrictness] -> ShowS)-> Show DecidedStrictnessforall a.(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a$cshowsPrec :: Int -> DecidedStrictness -> ShowSshowsPrec :: Int -> DecidedStrictness -> ShowS$cshow :: DecidedStrictness -> Stringshow :: DecidedStrictness -> String$cshowList :: [DecidedStrictness] -> ShowSshowList :: [DecidedStrictness] -> ShowSShow-- ^ @since 4.9.0.0,Eq DecidedStrictnessEq DecidedStrictness =>(DecidedStrictness -> DecidedStrictness -> Ordering)-> (DecidedStrictness -> DecidedStrictness -> Bool)-> (DecidedStrictness -> DecidedStrictness -> Bool)-> (DecidedStrictness -> DecidedStrictness -> Bool)-> (DecidedStrictness -> DecidedStrictness -> Bool)-> (DecidedStrictness -> DecidedStrictness -> DecidedStrictness)-> (DecidedStrictness -> DecidedStrictness -> DecidedStrictness)-> Ord DecidedStrictnessDecidedStrictness -> DecidedStrictness -> BoolDecidedStrictness -> DecidedStrictness -> OrderingDecidedStrictness -> DecidedStrictness -> DecidedStrictnessforall a.Eq a =>(a -> a -> Ordering)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> Bool)-> (a -> a -> a)-> (a -> a -> a)-> Ord a$ccompare :: DecidedStrictness -> DecidedStrictness -> Orderingcompare :: DecidedStrictness -> DecidedStrictness -> Ordering$c< :: DecidedStrictness -> DecidedStrictness -> Bool< :: DecidedStrictness -> DecidedStrictness -> Bool$c<= :: DecidedStrictness -> DecidedStrictness -> Bool<= :: DecidedStrictness -> DecidedStrictness -> Bool$c> :: DecidedStrictness -> DecidedStrictness -> Bool> :: DecidedStrictness -> DecidedStrictness -> Bool$c>= :: DecidedStrictness -> DecidedStrictness -> Bool>= :: DecidedStrictness -> DecidedStrictness -> Bool$cmax :: DecidedStrictness -> DecidedStrictness -> DecidedStrictnessmax :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness$cmin :: DecidedStrictness -> DecidedStrictness -> DecidedStrictnessmin :: DecidedStrictness -> DecidedStrictness -> DecidedStrictnessOrd-- ^ @since 4.9.0.0,ReadPrec [DecidedStrictness]ReadPrec DecidedStrictnessInt -> ReadS DecidedStrictnessReadS [DecidedStrictness](Int -> ReadS DecidedStrictness)-> ReadS [DecidedStrictness]-> ReadPrec DecidedStrictness-> ReadPrec [DecidedStrictness]-> Read DecidedStrictnessforall a.(Int -> ReadS a)-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a$creadsPrec :: Int -> ReadS DecidedStrictnessreadsPrec :: Int -> ReadS DecidedStrictness$creadList :: ReadS [DecidedStrictness]readList :: ReadS [DecidedStrictness]$creadPrec :: ReadPrec DecidedStrictnessreadPrec :: ReadPrec DecidedStrictness$creadListPrec :: ReadPrec [DecidedStrictness]readListPrec :: ReadPrec [DecidedStrictness]Read-- ^ @since 4.9.0.0,Int -> DecidedStrictnessDecidedStrictness -> IntDecidedStrictness -> [DecidedStrictness]DecidedStrictness -> DecidedStrictnessDecidedStrictness -> DecidedStrictness -> [DecidedStrictness]DecidedStrictness-> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness](DecidedStrictness -> DecidedStrictness)-> (DecidedStrictness -> DecidedStrictness)-> (Int -> DecidedStrictness)-> (DecidedStrictness -> Int)-> (DecidedStrictness -> [DecidedStrictness])-> (DecidedStrictness -> DecidedStrictness -> [DecidedStrictness])-> (DecidedStrictness -> DecidedStrictness -> [DecidedStrictness])-> (DecidedStrictness    -> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness])-> Enum DecidedStrictnessforall a.(a -> a)-> (a -> a)-> (Int -> a)-> (a -> Int)-> (a -> [a])-> (a -> a -> [a])-> (a -> a -> [a])-> (a -> a -> a -> [a])-> Enum a$csucc :: DecidedStrictness -> DecidedStrictnesssucc :: DecidedStrictness -> DecidedStrictness$cpred :: DecidedStrictness -> DecidedStrictnesspred :: DecidedStrictness -> DecidedStrictness$ctoEnum :: Int -> DecidedStrictnesstoEnum :: Int -> DecidedStrictness$cfromEnum :: DecidedStrictness -> IntfromEnum :: DecidedStrictness -> Int$cenumFrom :: DecidedStrictness -> [DecidedStrictness]enumFrom :: DecidedStrictness -> [DecidedStrictness]$cenumFromThen :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]enumFromThen :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]$cenumFromTo :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]enumFromTo :: DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]$cenumFromThenTo :: DecidedStrictness-> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]enumFromThenTo :: DecidedStrictness-> DecidedStrictness -> DecidedStrictness -> [DecidedStrictness]Enum-- ^ @since 4.9.0.0,DecidedStrictnessDecidedStrictness -> DecidedStrictness -> Bounded DecidedStrictnessforall a. a -> a -> Bounded a$cminBound :: DecidedStrictnessminBound :: DecidedStrictness$cmaxBound :: DecidedStrictnessmaxBound :: DecidedStrictnessBounded-- ^ @since 4.9.0.0,Ord DecidedStrictnessOrd DecidedStrictness =>((DecidedStrictness, DecidedStrictness) -> [DecidedStrictness])-> ((DecidedStrictness, DecidedStrictness)    -> DecidedStrictness -> Int)-> ((DecidedStrictness, DecidedStrictness)    -> DecidedStrictness -> Int)-> ((DecidedStrictness, DecidedStrictness)    -> DecidedStrictness -> Bool)-> ((DecidedStrictness, DecidedStrictness) -> Int)-> ((DecidedStrictness, DecidedStrictness) -> Int)-> Ix DecidedStrictness(DecidedStrictness, DecidedStrictness) -> Int(DecidedStrictness, DecidedStrictness) -> [DecidedStrictness](DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool(DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Intforall a.Ord a =>((a, a) -> [a])-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Int)-> ((a, a) -> a -> Bool)-> ((a, a) -> Int)-> ((a, a) -> Int)-> Ix a$crange :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness]range :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness]$cindex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Intindex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int$cunsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> IntunsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int$cinRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> BoolinRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool$crangeSize :: (DecidedStrictness, DecidedStrictness) -> IntrangeSize :: (DecidedStrictness, DecidedStrictness) -> Int$cunsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> IntunsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> IntIx-- ^ @since 4.9.0.0,(forall x. DecidedStrictness -> Rep DecidedStrictness x)-> (forall x. Rep DecidedStrictness x -> DecidedStrictness)-> Generic DecidedStrictnessforall x. Rep DecidedStrictness x -> DecidedStrictnessforall x. DecidedStrictness -> Rep DecidedStrictness xforall a.(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a$cfrom :: forall x. DecidedStrictness -> Rep DecidedStrictness xfrom :: forall x. DecidedStrictness -> Rep DecidedStrictness x$cto :: forall x. Rep DecidedStrictness x -> DecidedStrictnessto :: forall x. Rep DecidedStrictness x -> DecidedStrictnessGeneric-- ^ @since 4.9.0.0)-- | Class for datatypes that represent recordsclassSelectorswhere-- | The name of the selectorselName::ts(f::k->Type)(a::k)->[Char]-- | The selector's unpackedness annotation (if any)---- @since 4.9.0.0selSourceUnpackedness::ts(f::k->Type)(a::k)->SourceUnpackedness-- | The selector's strictness annotation (if any)---- @since 4.9.0.0selSourceStrictness::ts(f::k->Type)(a::k)->SourceStrictness-- | The strictness that the compiler inferred for the selector---- @since 4.9.0.0selDecidedStrictness::ts(f::k->Type)(a::k)->DecidedStrictness-- | @since 4.9.0.0instance(SingImn,SingIsu,SingIss,SingIds)=>Selector('MetaSelmnsussds)whereselName :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaSel mn su ss ds) f a -> StringselNamet ('MetaSel mn su ss ds) f a_=String -> Maybe String -> Stringforall a. a -> Maybe a -> afromMaybeString""(Sing mn -> DemoteRep (Maybe Symbol)forall (a :: Maybe Symbol). Sing a -> DemoteRep (Maybe Symbol)forall k (a :: k). SingKind k => Sing a -> DemoteRep kfromSing(Sing mnforall k (a :: k). SingI a => Sing asing::Singmn))selSourceUnpackedness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaSel mn su ss ds) f a -> SourceUnpackednessselSourceUnpackednesst ('MetaSel mn su ss ds) f a_=Sing su -> DemoteRep SourceUnpackednessforall k (a :: k). SingKind k => Sing a -> DemoteRep kforall (a :: SourceUnpackedness).Sing a -> DemoteRep SourceUnpackednessfromSing(Sing suforall k (a :: k). SingI a => Sing asing::Singsu)selSourceStrictness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaSel mn su ss ds) f a -> SourceStrictnessselSourceStrictnesst ('MetaSel mn su ss ds) f a_=Sing ss -> DemoteRep SourceStrictnessforall k (a :: k). SingKind k => Sing a -> DemoteRep kforall (a :: SourceStrictness).Sing a -> DemoteRep SourceStrictnessfromSing(Sing ssforall k (a :: k). SingI a => Sing asing::Singss)selDecidedStrictness :: forall k (t :: Meta -> (k -> *) -> k -> *) (f :: k -> *) (a :: k).t ('MetaSel mn su ss ds) f a -> DecidedStrictnessselDecidedStrictnesst ('MetaSel mn su ss ds) f a_=Sing ds -> DemoteRep DecidedStrictnessforall k (a :: k). SingKind k => Sing a -> DemoteRep kforall (a :: DecidedStrictness).Sing a -> DemoteRep DecidedStrictnessfromSing(Sing dsforall k (a :: k). SingI a => Sing asing::Singds)-- | Representable types of kind @*@.-- This class is derivable in GHC with the @DeriveGeneric@ flag on.---- A 'Generic' instance must satisfy the following laws:---- @-- 'from' . 'to' ≡ 'Prelude.id'-- 'to' . 'from' ≡ 'Prelude.id'-- @classGenericawhere-- | Generic representation typetypeRepa::Type->Type-- | Convert from the datatype to its representationfrom::a->(Repa)x-- | Convert from the representation to the datatypeto::(Repa)x->a-- | Representable types of kind @* -> *@ (or kind @k -> *@, when @PolyKinds@-- is enabled).-- This class is derivable in GHC with the @DeriveGeneric@ flag on.---- A 'Generic1' instance must satisfy the following laws:---- @-- 'from1' . 'to1' ≡ 'Prelude.id'-- 'to1' . 'from1' ≡ 'Prelude.id'-- @classGeneric1(f::k->Type)where-- | Generic representation typetypeRep1f::k->Type-- | Convert from the datatype to its representationfrom1::fa->(Rep1f)a-- | Convert from the representation to the datatypeto1::(Rep1f)a->fa---------------------------------------------------------------------------------- 'Generic' wrapper---------------------------------------------------------------------------------- | A datatype whose instances are defined generically, using the-- 'Generic' representation. 'Generically1' is a higher-kinded version-- of 'Generically' that uses 'Generic1'.---- Generic instances can be derived via @'Generically' A@ using-- @-XDerivingVia@.---- @-- {-# LANGUAGE DeriveGeneric      #-}-- {-# LANGUAGE DerivingStrategies #-}-- {-# LANGUAGE DerivingVia        #-}---- import GHC.Generics (Generic)---- data V4 a = V4 a a a a--   deriving stock Generic----   deriving (Semigroup, Monoid)--   via Generically (V4 a)-- @---- This corresponds to 'Semigroup' and 'Monoid' instances defined by-- pointwise lifting:---- @-- instance Semigroup a => Semigroup (V4 a) where--   (<>) :: V4 a -> V4 a -> V4 a--   V4 a1 b1 c1 d1 <> V4 a2 b2 c2 d2 =--     V4 (a1 <> a2) (b1 <> b2) (c1 <> c2) (d1 <> d2)---- instance Monoid a => Monoid (V4 a) where--   mempty :: V4 a--   mempty = V4 mempty mempty mempty mempty-- @---- Historically this required modifying the type class to include-- generic method definitions (@-XDefaultSignatures@) and deriving it-- with the @anyclass@ strategy (@-XDeriveAnyClass@). Having a /via-- type/ like 'Generically' decouples the instance from the type-- class.---- @since 4.17.0.0newtypeGenericallya=Genericallya-- | @since 4.17.0.0instance(Generica,Semigroup(Repa()))=>Semigroup(Genericallya)where(<>)::Genericallya->Genericallya->GenericallyaGenericallyaa<> :: Generically a -> Generically a -> Generically a<>Genericallyab=a -> Generically aforall a. a -> Generically aGenerically(Rep a () -> aforall a x. Generic a => Rep a x -> aforall x. Rep a x -> ato(a -> Rep a ()forall x. a -> Rep a xforall a x. Generic a => a -> Rep a xfromaaRep a () -> Rep a () -> Rep a ()forall a. Semigroup a => a -> a -> a<>a -> Rep a ()forall x. a -> Rep a xforall a x. Generic a => a -> Rep a xfromab::Repa()))-- | @since 4.17.0.0instance(Generica,Monoid(Repa()))=>Monoid(Genericallya)wheremempty::Genericallyamempty :: Generically amempty=a -> Generically aforall a. a -> Generically aGenerically(Rep a () -> aforall a x. Generic a => Rep a x -> aforall x. Rep a x -> ato(Rep a ()forall a. Monoid a => amempty::Repa()))mappend::Genericallya->Genericallya->Genericallyamappend :: Generically a -> Generically a -> Generically amappend=Generically a -> Generically a -> Generically aforall a. Semigroup a => a -> a -> a(<>)-- | A type whose instances are defined generically, using the-- 'Generic1' representation. 'Generically1' is a higher-kinded-- version of 'Generically' that uses 'Generic'.---- Generic instances can be derived for type constructors via-- @'Generically1' F@ using @-XDerivingVia@.---- @-- {-# LANGUAGE DeriveGeneric      #-}-- {-# LANGUAGE DerivingStrategies #-}-- {-# LANGUAGE DerivingVia        #-}---- import GHC.Generics (Generic)---- data V4 a = V4 a a a a--   deriving stock (Functor, Generic1)----   deriving Applicative--   via Generically1 V4-- @---- This corresponds to 'Applicative' instances defined by pointwise-- lifting:---- @-- instance Applicative V4 where--   pure :: a -> V4 a--   pure a = V4 a a a a----   liftA2 :: (a -> b -> c) -> (V4 a -> V4 b -> V4 c)--   liftA2 (·) (V4 a1 b1 c1 d1) (V4 a2 b2 c2 d2) =--     V4 (a1 · a2) (b1 · b2) (c1 · c2) (d1 · d2)-- @---- Historically this required modifying the type class to include-- generic method definitions (@-XDefaultSignatures@) and deriving it-- with the @anyclass@ strategy (@-XDeriveAnyClass@). Having a /via-- type/ like 'Generically1' decouples the instance from the type-- class.---- @since 4.17.0.0typeGenerically1::forallk.(k->Type)->(k->Type)newtypeGenerically1fawhereGenerically1::forall{k}fa.fa->Generically1@kfa-- | @since 4.18.0.0instance(Generic1f,Eq(Rep1fa))=>Eq(Generically1fa)whereGenerically1f ax== :: Generically1 f a -> Generically1 f a -> Bool==Generically1f ay=f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f axRep1 f a -> Rep1 f a -> Boolforall a. Eq a => a -> a -> Bool==f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f ayGenerically1f ax/= :: Generically1 f a -> Generically1 f a -> Bool/=Generically1f ay=f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f axRep1 f a -> Rep1 f a -> Boolforall a. Eq a => a -> a -> Bool/=f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f ay-- | @since 4.18.0.0instance(Generic1f,Ord(Rep1fa))=>Ord(Generically1fa)whereGenerically1f axcompare :: Generically1 f a -> Generically1 f a -> Ordering`compare`Generically1f ay=f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f axRep1 f a -> Rep1 f a -> Orderingforall a. Ord a => a -> a -> Ordering`compare`f a -> Rep1 f aforall (a :: k). f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f ay-- | @since 4.17.0.0instance(Generic1f,Functor(Rep1f))=>Functor(Generically1f)wherefmap::(a->a')->(Generically1fa->Generically1fa')fmap :: forall a b. (a -> b) -> Generically1 f a -> Generically1 f bfmapa -> a'f(Generically1f aas)=f a' -> Generically1 f a'forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a' -> f a'forall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1((a -> a') -> Rep1 f a -> Rep1 f a'forall a b. (a -> b) -> Rep1 f a -> Rep1 f bforall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f bfmapa -> a'f(f a -> Rep1 f aforall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f aas)))(<$)::a->Generically1fb->Generically1faaa<$ :: forall a b. a -> Generically1 f b -> Generically1 f a<$Generically1f bas=f a -> Generically1 f aforall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a -> f aforall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1(aaa -> Rep1 f b -> Rep1 f aforall a b. a -> Rep1 f b -> Rep1 f aforall (f :: * -> *) a b. Functor f => a -> f b -> f a<$f b -> Rep1 f bforall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f bas))-- | @since 4.17.0.0instance(Generic1f,Applicative(Rep1f))=>Applicative(Generically1f)wherepure::a->Generically1fapure :: forall a. a -> Generically1 f apureaa=f a -> Generically1 f aforall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a -> f aforall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1(a -> Rep1 f aforall a. a -> Rep1 f aforall (f :: * -> *) a. Applicative f => a -> f apureaa))(<*>)::Generically1f(a1->a2)->Generically1fa1->Generically1fa2Generically1f (a1 -> a2)fs<*> :: forall a b.Generically1 f (a -> b) -> Generically1 f a -> Generically1 f b<*>Generically1f a1as=f a2 -> Generically1 f a2forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a2 -> f a2forall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1(f (a1 -> a2) -> Rep1 f (a1 -> a2)forall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f (a1 -> a2)fsRep1 f (a1 -> a2) -> Rep1 f a1 -> Rep1 f a2forall a b. Rep1 f (a -> b) -> Rep1 f a -> Rep1 f bforall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b<*>f a1 -> Rep1 f a1forall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f a1as))liftA2::(a1->a2->a3)->(Generically1fa1->Generically1fa2->Generically1fa3)liftA2 :: forall a b c.(a -> b -> c)-> Generically1 f a -> Generically1 f b -> Generically1 f cliftA2a1 -> a2 -> a3(·)(Generically1f a1as)(Generically1f a2bs)=f a3 -> Generically1 f a3forall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a3 -> f a3forall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1((a1 -> a2 -> a3) -> Rep1 f a1 -> Rep1 f a2 -> Rep1 f a3forall a b c. (a -> b -> c) -> Rep1 f a -> Rep1 f b -> Rep1 f cforall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2a1 -> a2 -> a3(·)(f a1 -> Rep1 f a1forall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f a1as)(f a2 -> Rep1 f a2forall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f a2bs)))-- | @since 4.17.0.0instance(Generic1f,Alternative(Rep1f))=>Alternative(Generically1f)whereempty::Generically1faempty :: forall a. Generically1 f aempty=f a -> Generically1 f aforall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a -> f aforall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1Rep1 f aforall a. Rep1 f aforall (f :: * -> *) a. Alternative f => f aempty)(<|>)::Generically1fa->Generically1fa->Generically1faGenerically1f aas1<|> :: forall a. Generically1 f a -> Generically1 f a -> Generically1 f a<|>Generically1f aas2=f a -> Generically1 f aforall {k} (f :: k -> *) (a :: k). f a -> Generically1 f aGenerically1(Rep1 f a -> f aforall a. Rep1 f a -> f aforall k (f :: k -> *) (a :: k). Generic1 f => Rep1 f a -> f ato1(f a -> Rep1 f aforall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f aas1Rep1 f a -> Rep1 f a -> Rep1 f aforall a. Rep1 f a -> Rep1 f a -> Rep1 f aforall (f :: * -> *) a. Alternative f => f a -> f a -> f a<|>f a -> Rep1 f aforall a. f a -> Rep1 f aforall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f afrom1f aas2))---------------------------------------------------------------------------------- Meta-data---------------------------------------------------------------------------------- | Datatype to represent metadata associated with a datatype (@MetaData@),-- constructor (@MetaCons@), or field selector (@MetaSel@).---- * In @MetaData n m p nt@, @n@ is the datatype's name, @m@ is the module in--   which the datatype is defined, @p@ is the package in which the datatype--   is defined, and @nt@ is @'True@ if the datatype is a @newtype@.---- * In @MetaCons n f s@, @n@ is the constructor's name, @f@ is its fixity,--   and @s@ is @'True@ if the constructor contains record selectors.---- * In @MetaSel mn su ss ds@, if the field uses record syntax, then @mn@ is--   'Just' the record name. Otherwise, @mn@ is 'Nothing'. @su@ and @ss@ are--   the field's unpackedness and strictness annotations, and @ds@ is the--   strictness that GHC infers for the field.---- @since 4.9.0.0dataMeta=MetaDataSymbolSymbolSymbolBool|MetaConsSymbolFixityIBool|MetaSel(MaybeSymbol)SourceUnpackednessSourceStrictnessDecidedStrictness---------------------------------------------------------------------------------- Derived instances---------------------------------------------------------------------------------- | @since 4.8.0.0derivinginstanceGenericVoid-- | @since 4.6.0.0derivinginstanceGeneric[a]-- | @since 4.6.0.0derivinginstanceGeneric(NonEmptya)-- | @since 4.6.0.0derivinginstanceGeneric(Maybea)-- | @since 4.6.0.0derivinginstanceGeneric(Eitherab)-- | @since 4.6.0.0derivinginstanceGenericBool-- | @since 4.6.0.0derivinginstanceGenericOrdering-- | @since 4.6.0.0derivinginstanceGeneric(Proxyt)-- | @since 4.6.0.0derivinginstanceGeneric()-- | @since 4.15derivinginstanceGeneric(Soloa)-- | @since 4.6.0.0derivinginstanceGeneric((,)ab)-- | @since 4.6.0.0derivinginstanceGeneric((,,)abc)-- | @since 4.6.0.0derivinginstanceGeneric((,,,)abcd)-- | @since 4.6.0.0derivinginstanceGeneric((,,,,)abcde)-- | @since 4.6.0.0derivinginstanceGeneric((,,,,,)abcdef)-- | @since 4.6.0.0derivinginstanceGeneric((,,,,,,)abcdefg)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,)abcdefgh)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,)abcdefghi)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,)abcdefghij)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,,)abcdefghijk)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,,,)abcdefghijkl)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,,,,)abcdefghijklm)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,,,,,)abcdefghijklmn)-- | @since 4.16.0.0derivinginstanceGeneric((,,,,,,,,,,,,,,)abcdefghijklmno)-- | @since 4.12.0.0derivinginstanceGeneric(Downa)-- | @since 4.15.0.0derivinginstanceGenericSrcLoc-- | @since 4.15.0.0derivinginstanceGenericGeneralCategory-- | @since 4.15.0.0derivinginstanceGenericFingerprint-- | @since 4.6.0.0derivinginstanceGeneric1[]-- | @since 4.6.0.0derivinginstanceGeneric1NonEmpty-- | @since 4.6.0.0derivinginstanceGeneric1Maybe-- | @since 4.6.0.0derivinginstanceGeneric1(Eithera)-- | @since 4.6.0.0derivinginstanceGeneric1Proxy-- | @since 4.15derivinginstanceGeneric1Solo-- | @since 4.6.0.0derivinginstanceGeneric1((,)a)-- | @since 4.6.0.0derivinginstanceGeneric1((,,)ab)-- | @since 4.6.0.0derivinginstanceGeneric1((,,,)abc)-- | @since 4.6.0.0derivinginstanceGeneric1((,,,,)abcd)-- | @since 4.6.0.0derivinginstanceGeneric1((,,,,,)abcde)-- | @since 4.6.0.0derivinginstanceGeneric1((,,,,,,)abcdef)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,)abcdefg)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,)abcdefgh)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,)abcdefghi)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,,)abcdefghij)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,,,)abcdefghijk)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,,,,)abcdefghijkl)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,,,,,)abcdefghijklm)-- | @since 4.16.0.0derivinginstanceGeneric1((,,,,,,,,,,,,,,)abcdefghijklmn)-- | @since 4.12.0.0derivinginstanceGeneric1Down---------------------------------------------------------------------------------- Copied from the singletons package---------------------------------------------------------------------------------- | The singleton kind-indexed data family.datafamilySing(a::k)-- | A 'SingI' constraint is essentially an implicitly-passed singleton.classSingI(a::k)where-- | Produce the singleton explicitly. You will likely need the @ScopedTypeVariables@-- extension to use this method the way you want.sing::Singa-- | The 'SingKind' class is essentially a /kind/ class. It classifies all kinds-- for which singletons are defined. The class supports converting between a singleton-- type and the base (unrefined) type which it is built from.classSingKindkwhere-- | Get a base type from a proxy for the promoted kind. For example,-- @DemoteRep Bool@ will be the type @Bool@.typeDemoteRepk::Type-- | Convert a singleton to its unrefined version.fromSing::Sing(a::k)->DemoteRepk-- Singleton symbolsdatainstanceSing(s::Symbol)whereSSym::KnownSymbols=>Sings-- | @since 4.9.0.0instanceKnownSymbola=>SingIawheresing :: Sing asing=Sing aforall (a :: Symbol). KnownSymbol a => Sing aSSym-- | @since 4.9.0.0instanceSingKindSymbolwheretypeDemoteRepSymbol=StringfromSing :: forall (a :: Symbol). Sing a -> DemoteRep SymbolfromSing(Sing aR:SingSymbols aSSym::Sings)=Proxy a -> Stringforall (n :: Symbol) (proxy :: Symbol -> *).KnownSymbol n =>proxy n -> StringsymbolVal(Proxy aforall {k} (t :: k). Proxy tProxy::Proxys)-- Singleton booleansdatainstanceSing(a::Bool)whereSTrue::Sing'TrueSFalse::Sing'False-- | @since 4.9.0.0instanceSingI'Truewheresing :: Sing 'Truesing=Sing 'TrueSTrue-- | @since 4.9.0.0instanceSingI'Falsewheresing :: Sing 'Falsesing=Sing 'FalseSFalse-- | @since 4.9.0.0instanceSingKindBoolwheretypeDemoteRepBool=BoolfromSing :: forall (a :: Bool). Sing a -> DemoteRep BoolfromSingSing aR:SingBoola aSTrue=BoolDemoteRep BoolTruefromSingSing aR:SingBoola aSFalse=BoolDemoteRep BoolFalse-- Singleton MaybedatainstanceSing(b::Maybea)whereSNothing::Sing'NothingSJust::Singa->Sing('Justa)-- | @since 4.9.0.0instanceSingI'Nothingwheresing :: Sing 'Nothingsing=Sing 'Nothingforall a. Sing 'NothingSNothing-- | @since 4.9.0.0instanceSingIa=>SingI('Justa)wheresing :: Sing ('Just a)sing=Sing a -> Sing ('Just a)forall {k} (a :: k). Sing a -> Sing ('Just a)SJustSing aforall k (a :: k). SingI a => Sing asing-- | @since 4.9.0.0instanceSingKinda=>SingKind(Maybea)wheretypeDemoteRep(Maybea)=Maybe(DemoteRepa)fromSing :: forall (a :: Maybe a). Sing a -> DemoteRep (Maybe a)fromSingSing aR:SingMaybeb a aSNothing=Maybe (DemoteRep a)DemoteRep (Maybe a)forall a. Maybe aNothingfromSing(SJustSing aa)=DemoteRep a -> Maybe (DemoteRep a)forall a. a -> Maybe aJust(Sing a -> DemoteRep aforall (a :: a). Sing a -> DemoteRep aforall k (a :: k). SingKind k => Sing a -> DemoteRep kfromSingSing aa)-- Singleton FixitydatainstanceSing(a::FixityI)whereSPrefix::Sing'PrefixISInfix::Singa->Integer->Sing('InfixIan)-- | @since 4.9.0.0instanceSingI'PrefixIwheresing :: Sing 'PrefixIsing=Sing 'PrefixISPrefix-- | @since 4.9.0.0instance(SingIa,KnownNatn)=>SingI('InfixIan)wheresing :: Sing ('InfixI a n)sing=Sing a -> Integer -> Sing ('InfixI a n)forall (a :: Associativity) (n :: Nat).Sing a -> Integer -> Sing ('InfixI a n)SInfix(Sing aforall k (a :: k). SingI a => Sing asing::Singa)(Proxy n -> Integerforall (n :: Nat) (proxy :: Nat -> *).KnownNat n =>proxy n -> IntegernatVal(Proxy nforall {k} (t :: k). Proxy tProxy::Proxyn))-- | @since 4.9.0.0instanceSingKindFixityIwheretypeDemoteRepFixityI=FixityfromSing :: forall (a :: FixityI). Sing a -> DemoteRep FixityIfromSingSing aR:SingFixityIa aSPrefix=DemoteRep FixityIFixityPrefixfromSing(SInfixSing aaIntegern)=Associativity -> Int -> FixityInfix(Sing a -> DemoteRep Associativityforall k (a :: k). SingKind k => Sing a -> DemoteRep kforall (a :: Associativity). Sing a -> DemoteRep AssociativityfromSingSing aa)(Integer -> IntintegerToIntIntegern)-- Singleton AssociativitydatainstanceSing(a::Associativity)whereSLeftAssociative::Sing'LeftAssociativeSRightAssociative::Sing'RightAssociativeSNotAssociative::Sing'NotAssociative-- | @since 4.9.0.0instanceSingI'LeftAssociativewheresing :: Sing 'LeftAssociativesing=Sing 'LeftAssociativeSLeftAssociative-- | @since 4.9.0.0instanceSingI'RightAssociativewheresing :: Sing 'RightAssociativesing=Sing 'RightAssociativeSRightAssociative-- | @since 4.9.0.0instanceSingI'NotAssociativewheresing :: Sing 'NotAssociativesing=Sing 'NotAssociativeSNotAssociative-- | @since 4.0.0.0instanceSingKindAssociativitywheretypeDemoteRepAssociativity=AssociativityfromSing :: forall (a :: Associativity). Sing a -> DemoteRep AssociativityfromSingSing aR:SingAssociativitya aSLeftAssociative=DemoteRep AssociativityAssociativityLeftAssociativefromSingSing aR:SingAssociativitya aSRightAssociative=DemoteRep AssociativityAssociativityRightAssociativefromSingSing aR:SingAssociativitya aSNotAssociative=DemoteRep AssociativityAssociativityNotAssociative-- Singleton SourceUnpackednessdatainstanceSing(a::SourceUnpackedness)whereSNoSourceUnpackedness::Sing'NoSourceUnpackednessSSourceNoUnpack::Sing'SourceNoUnpackSSourceUnpack::Sing'SourceUnpack-- | @since 4.9.0.0instanceSingI'NoSourceUnpackednesswheresing :: Sing 'NoSourceUnpackednesssing=Sing 'NoSourceUnpackednessSNoSourceUnpackedness-- | @since 4.9.0.0instanceSingI'SourceNoUnpackwheresing :: Sing 'SourceNoUnpacksing=Sing 'SourceNoUnpackSSourceNoUnpack-- | @since 4.9.0.0instanceSingI'SourceUnpackwheresing :: Sing 'SourceUnpacksing=Sing 'SourceUnpackSSourceUnpack-- | @since 4.9.0.0instanceSingKindSourceUnpackednesswheretypeDemoteRepSourceUnpackedness=SourceUnpackednessfromSing :: forall (a :: SourceUnpackedness).Sing a -> DemoteRep SourceUnpackednessfromSingSing aR:SingSourceUnpackednessa aSNoSourceUnpackedness=DemoteRep SourceUnpackednessSourceUnpackednessNoSourceUnpackednessfromSingSing aR:SingSourceUnpackednessa aSSourceNoUnpack=DemoteRep SourceUnpackednessSourceUnpackednessSourceNoUnpackfromSingSing aR:SingSourceUnpackednessa aSSourceUnpack=DemoteRep SourceUnpackednessSourceUnpackednessSourceUnpack-- Singleton SourceStrictnessdatainstanceSing(a::SourceStrictness)whereSNoSourceStrictness::Sing'NoSourceStrictnessSSourceLazy::Sing'SourceLazySSourceStrict::Sing'SourceStrict-- | @since 4.9.0.0instanceSingI'NoSourceStrictnesswheresing :: Sing 'NoSourceStrictnesssing=Sing 'NoSourceStrictnessSNoSourceStrictness-- | @since 4.9.0.0instanceSingI'SourceLazywheresing :: Sing 'SourceLazysing=Sing 'SourceLazySSourceLazy-- | @since 4.9.0.0instanceSingI'SourceStrictwheresing :: Sing 'SourceStrictsing=Sing 'SourceStrictSSourceStrict-- | @since 4.9.0.0instanceSingKindSourceStrictnesswheretypeDemoteRepSourceStrictness=SourceStrictnessfromSing :: forall (a :: SourceStrictness).Sing a -> DemoteRep SourceStrictnessfromSingSing aR:SingSourceStrictnessa aSNoSourceStrictness=DemoteRep SourceStrictnessSourceStrictnessNoSourceStrictnessfromSingSing aR:SingSourceStrictnessa aSSourceLazy=DemoteRep SourceStrictnessSourceStrictnessSourceLazyfromSingSing aR:SingSourceStrictnessa aSSourceStrict=DemoteRep SourceStrictnessSourceStrictnessSourceStrict-- Singleton DecidedStrictnessdatainstanceSing(a::DecidedStrictness)whereSDecidedLazy::Sing'DecidedLazySDecidedStrict::Sing'DecidedStrictSDecidedUnpack::Sing'DecidedUnpack-- | @since 4.9.0.0instanceSingI'DecidedLazywheresing :: Sing 'DecidedLazysing=Sing 'DecidedLazySDecidedLazy-- | @since 4.9.0.0instanceSingI'DecidedStrictwheresing :: Sing 'DecidedStrictsing=Sing 'DecidedStrictSDecidedStrict-- | @since 4.9.0.0instanceSingI'DecidedUnpackwheresing :: Sing 'DecidedUnpacksing=Sing 'DecidedUnpackSDecidedUnpack-- | @since 4.9.0.0instanceSingKindDecidedStrictnesswheretypeDemoteRepDecidedStrictness=DecidedStrictnessfromSing :: forall (a :: DecidedStrictness).Sing a -> DemoteRep DecidedStrictnessfromSingSing aR:SingDecidedStrictnessa aSDecidedLazy=DemoteRep DecidedStrictnessDecidedStrictnessDecidedLazyfromSingSing aR:SingDecidedStrictnessa aSDecidedStrict=DemoteRep DecidedStrictnessDecidedStrictnessDecidedStrictfromSingSing aR:SingDecidedStrictnessa aSDecidedUnpack=DemoteRep DecidedStrictnessDecidedStrictnessDecidedUnpack

[8]ページ先頭

©2009-2025 Movatter.jp