-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Generic programming library for generalised deriving.
--   
--   This package provides functionality for generalising the deriving
--   mechanism in Haskell to arbitrary classes. It was first described in
--   the paper:
--   
--   <ul>
--   <li><i>A generic deriving mechanism for Haskell</i>. Jose Pedro
--   Magalhaes, Atze Dijkstra, Johan Jeuring, and Andres Loeh.
--   Haskell'10.</li>
--   </ul>
--   
--   The current implementation integrates with the new GHC Generics. See
--   <a>http://www.haskell.org/haskellwiki/GHC.Generics</a> for more
--   information. Template Haskell code is provided for supporting older
--   GHCs.
--   
--   This library is organized as follows:
--   
--   <ul>
--   <li><a>Generics.Deriving.Base</a> defines the core functionality for
--   GHC generics, including the <tt>Generic(1)</tt> classes and
--   representation data types. On modern versions of GHC, this simply
--   re-exports <a>GHC.Generics</a> from <tt>base</tt>. On older versions
--   of GHC, this module backports parts of <a>GHC.Generics</a> that were
--   not included at the time, including <tt>Generic(1)</tt>
--   instances.</li>
--   <li><a>Generics.Deriving.TH</a> implements Template Haskell
--   functionality for deriving instances of <tt>Generic(1)</tt>.</li>
--   <li>Educational code: in order to provide examples of how to define
--   and use <a>GHC.Generics</a>-based defaults, this library offers a
--   number of modules which define examples of type classes along with
--   default implementations for the classes' methods. Currently, the
--   following modules are provided: <a>Generics.Deriving.Copoint</a>,
--   <a>Generics.Deriving.ConNames</a>, <a>Generics.Deriving.Enum</a>,
--   <a>Generics.Deriving.Eq</a>, <a>Generics.Deriving.Foldable</a>,
--   <a>Generics.Deriving.Functor</a>, <a>Generics.Deriving.Monoid</a>,
--   <a>Generics.Deriving.Semigroup</a>, <a>Generics.Deriving.Show</a>,
--   <a>Generics.Deriving.Traversable</a>, and
--   <a>Generics.Deriving.Uniplate</a>.</li>
--   </ul>
--   
--   It is worth emphasizing that these modules are primarly intended for
--   educational purposes. Many of the classes in these modules resemble
--   other commonly used classes—for example, <tt>GShow</tt> from
--   <a>Generics.Deriving.Show</a> resembles <tt>Show</tt> from
--   <tt>base</tt>—but in general, the classes that
--   <tt>generic-deriving</tt> defines are not drop-in replacements.
--   Moreover, the generic defaults that <tt>generic-deriving</tt> provide
--   often make simplifying assumptions that may violate expectations of
--   how these classes might work elsewhere. For example, the generic
--   default for <tt>GShow</tt> does not behave exactly like <tt>deriving
--   Show</tt> would.
--   
--   If you are seeking <a>GHC.Generics</a>-based defaults for type classes
--   in <tt>base</tt>, consider using the <tt><a>generic-data</a></tt>
--   library.
--   
--   <ul>
--   <li><a>Generics.Deriving.Default</a> provides newtypes that allow
--   leveraging the generic defaults in this library using the
--   <tt>DerivingVia</tt> GHC language extension.</li>
--   <li><a>Generics.Deriving</a> re-exports <a>Generics.Deriving.Base</a>,
--   <a>Generics.Deriving.Default</a>, and a selection of educational
--   modules.</li>
--   </ul>
@package generic-deriving
@version 1.14.7

module Generics.Deriving.Instances

module Generics.Deriving.Base
class Datatype (d :: k)
datatypeName :: forall k1 t (f :: k1 -> Type) (a :: k1). Datatype d => t d f a -> [Char]
moduleName :: forall k1 t (f :: k1 -> Type) (a :: k1). Datatype d => t d f a -> [Char]
packageName :: forall k1 t (f :: k1 -> Type) (a :: k1). Datatype d => t d f a -> [Char]
isNewtype :: forall k1 t (f :: k1 -> Type) (a :: k1). Datatype d => t d f a -> Bool
data DecidedStrictness
DecidedLazy :: DecidedStrictness
DecidedStrict :: DecidedStrictness
DecidedUnpack :: DecidedStrictness
data Fixity
Prefix :: Fixity
Infix :: Associativity -> Int -> Fixity
data SourceStrictness
NoSourceStrictness :: SourceStrictness
SourceLazy :: SourceStrictness
SourceStrict :: SourceStrictness
data SourceUnpackedness
NoSourceUnpackedness :: SourceUnpackedness
SourceNoUnpack :: SourceUnpackedness
SourceUnpack :: SourceUnpackedness
class Generic a where {
    type Rep a :: Type -> Type;
}
from :: Generic a => a -> Rep a x
to :: Generic a => Rep a x -> a
prec :: Fixity -> Int
data ( (f :: k -> Type) :*: (g :: k -> Type) ) (p :: k)
(:*:) :: f p -> g p -> (:*:) (f :: k -> Type) (g :: k -> Type) (p :: k)
data ( (f :: k -> Type) :+: (g :: k -> Type) ) (p :: k)
L1 :: f p -> (:+:) (f :: k -> Type) (g :: k -> Type) (p :: k)
R1 :: g p -> (:+:) (f :: k -> Type) (g :: k -> Type) (p :: k)
newtype ( (f :: k2 -> Type) :.: (g :: k1 -> k2) ) (p :: k1)
Comp1 :: f (g p) -> (:.:) (f :: k2 -> Type) (g :: k1 -> k2) (p :: k1)
[unComp1] :: (:.:) (f :: k2 -> Type) (g :: k1 -> k2) (p :: k1) -> f (g p)
data Associativity
LeftAssociative :: Associativity
RightAssociative :: Associativity
NotAssociative :: Associativity
class Constructor (c :: k)
conName :: forall k1 t (f :: k1 -> Type) (a :: k1). Constructor c => t c f a -> [Char]
conFixity :: forall k1 t (f :: k1 -> Type) (a :: k1). Constructor c => t c f a -> Fixity
conIsRecord :: forall k1 t (f :: k1 -> Type) (a :: k1). Constructor c => t c f a -> Bool
data FixityI
PrefixI :: FixityI
InfixI :: Associativity -> Nat -> FixityI
class Generic1 (f :: k -> Type) where {
    type Rep1 (f :: k -> Type) :: k -> Type;
}
from1 :: forall (a :: k). Generic1 f => f a -> Rep1 f a
to1 :: forall (a :: k). Generic1 f => Rep1 f a -> f a
newtype Generically a
Generically :: a -> Generically a
newtype Generically1 (f :: k -> Type) (a :: k)
[Generically1] :: forall {k} (f :: k -> Type) (a :: k). f a -> Generically1 f a
newtype K1 i c (p :: k)
K1 :: c -> K1 i c (p :: k)
[unK1] :: K1 i c (p :: k) -> c
newtype M1 i (c :: Meta) (f :: k -> Type) (p :: k)
M1 :: f p -> M1 i (c :: Meta) (f :: k -> Type) (p :: k)
[unM1] :: M1 i (c :: Meta) (f :: k -> Type) (p :: k) -> f p
data Meta
MetaData :: Symbol -> Symbol -> Symbol -> Bool -> Meta
MetaCons :: Symbol -> FixityI -> Bool -> Meta
MetaSel :: Maybe Symbol -> SourceUnpackedness -> SourceStrictness -> DecidedStrictness -> Meta
newtype Par1 p
Par1 :: p -> Par1 p
[unPar1] :: Par1 p -> p
newtype Rec1 (f :: k -> Type) (p :: k)
Rec1 :: f p -> Rec1 (f :: k -> Type) (p :: k)
[unRec1] :: Rec1 (f :: k -> Type) (p :: k) -> f p
class Selector (s :: k)
selName :: forall k1 t (f :: k1 -> Type) (a :: k1). Selector s => t s f a -> [Char]
selSourceUnpackedness :: forall k1 t (f :: k1 -> Type) (a :: k1). Selector s => t s f a -> SourceUnpackedness
selSourceStrictness :: forall k1 t (f :: k1 -> Type) (a :: k1). Selector s => t s f a -> SourceStrictness
selDecidedStrictness :: forall k1 t (f :: k1 -> Type) (a :: k1). Selector s => t s f a -> DecidedStrictness
data U1 (p :: k)
U1 :: U1 (p :: k)
type UAddr = URec Ptr () :: k -> Type
data family URec a (p :: k)
type UChar = URec Char :: k -> Type
type UDouble = URec Double :: k -> Type
type UFloat = URec Float :: k -> Type
type UInt = URec Int :: k -> Type
type UWord = URec Word :: k -> Type
type family Rep1 (f :: k -> Type) :: k -> Type
type family Rep a :: Type -> Type
type S1 = M1 S :: Meta -> k -> Type -> k -> Type
type C1 = M1 C :: Meta -> k -> Type -> k -> Type
type D1 = M1 D :: Meta -> k -> Type -> k -> Type
type Rec0 = K1 R :: Type -> k -> Type
data S
data C
data D
data R
data V1 (p :: k)

module Generics.Deriving.Functor
class GFunctor (f :: Type -> Type)
gmap :: GFunctor f => (a -> b) -> f a -> f b
($dmgmap) :: (GFunctor f, Generic1 f, GFunctor' (Rep1 f)) => (a -> b) -> f a -> f b
gmapdefault :: (Generic1 f, GFunctor' (Rep1 f)) => (a -> b) -> f a -> f b
class GFunctor' (f :: Type -> Type)
gmap' :: GFunctor' f => (a -> b) -> f a -> f b
instance (Generics.Deriving.Functor.GFunctor' f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Internal.Generics.:*: g)
instance (Generics.Deriving.Functor.GFunctor' f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Internal.Generics.:+: g)
instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Internal.Generics.:.: g)
instance Generics.Deriving.Functor.GFunctor' (GHC.Internal.Generics.K1 i c)
instance Generics.Deriving.Functor.GFunctor' f => Generics.Deriving.Functor.GFunctor' (GHC.Internal.Generics.M1 i c f)
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.Par1
instance Generics.Deriving.Functor.GFunctor f => Generics.Deriving.Functor.GFunctor' (GHC.Internal.Generics.Rec1 f)
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.U1
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UAddr
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UChar
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UDouble
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UFloat
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UInt
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.UWord
instance Generics.Deriving.Functor.GFunctor' GHC.Internal.Generics.V1
instance Generics.Deriving.Functor.GFunctor f => Generics.Deriving.Functor.GFunctor (GHC.Internal.Data.Semigroup.Internal.Alt f)
instance Generics.Deriving.Functor.GFunctor (Data.Semigroup.Arg a)
instance Generics.Deriving.Functor.GFunctor Data.Complex.Complex
instance Generics.Deriving.Functor.GFunctor (GHC.Internal.Data.Functor.Const.Const m)
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Ord.Down
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Semigroup.Internal.Dual
instance Generics.Deriving.Functor.GFunctor (GHC.Internal.Data.Either.Either a)
instance Generics.Deriving.Functor.GFunctor ((->) r)
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.First
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Monoid.First
instance Generics.Deriving.Functor.GFunctor GHC.Types.IO
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Functor.Identity.Identity
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Last
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Monoid.Last
instance Generics.Deriving.Functor.GFunctor []
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Max
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Maybe.Maybe
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Min
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Base.NonEmpty
instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor g) => Generics.Deriving.Functor.GFunctor (Data.Functor.Product.Product f g)
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Semigroup.Internal.Product
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Proxy.Proxy
instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor g) => Generics.Deriving.Functor.GFunctor (Data.Functor.Sum.Sum f g)
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Data.Semigroup.Internal.Sum
instance Generics.Deriving.Functor.GFunctor ((,) a)
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Functor.GFunctor GHC.Internal.Functor.ZipList.ZipList

module Generics.Deriving.Foldable
class GFoldable (t :: Type -> Type)
gfoldMap :: (GFoldable t, Monoid m) => (a -> m) -> t a -> m
($dmgfoldMap) :: (GFoldable t, Generic1 t, GFoldable' (Rep1 t), Monoid m) => (a -> m) -> t a -> m
gfold :: (GFoldable t, Monoid m) => t m -> m
gfoldr :: GFoldable t => (a -> b -> b) -> b -> t a -> b
gfoldr' :: GFoldable t => (a -> b -> b) -> b -> t a -> b
gfoldl :: GFoldable t => (a -> b -> a) -> a -> t b -> a
gfoldl' :: GFoldable t => (a -> b -> a) -> a -> t b -> a
gfoldr1 :: GFoldable t => (a -> a -> a) -> t a -> a
gfoldl1 :: GFoldable t => (a -> a -> a) -> t a -> a
gfoldMapdefault :: (Generic1 t, GFoldable' (Rep1 t), Monoid m) => (a -> m) -> t a -> m
gtoList :: GFoldable t => t a -> [a]
gconcat :: GFoldable t => t [a] -> [a]
gconcatMap :: GFoldable t => (a -> [b]) -> t a -> [b]
gand :: GFoldable t => t Bool -> Bool
gor :: GFoldable t => t Bool -> Bool
gany :: GFoldable t => (a -> Bool) -> t a -> Bool
gall :: GFoldable t => (a -> Bool) -> t a -> Bool
gsum :: (GFoldable t, Num a) => t a -> a
gproduct :: (GFoldable t, Num a) => t a -> a
gmaximum :: (GFoldable t, Ord a) => t a -> a
gmaximumBy :: GFoldable t => (a -> a -> Ordering) -> t a -> a
gminimum :: (GFoldable t, Ord a) => t a -> a
gminimumBy :: GFoldable t => (a -> a -> Ordering) -> t a -> a
gelem :: (GFoldable t, Eq a) => a -> t a -> Bool
gnotElem :: (GFoldable t, Eq a) => a -> t a -> Bool
gfind :: GFoldable t => (a -> Bool) -> t a -> Maybe a
class GFoldable' (t :: Type -> Type)
gfoldMap' :: (GFoldable' t, Monoid m) => (a -> m) -> t a -> m
instance (Generics.Deriving.Foldable.GFoldable' f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Internal.Generics.:*: g)
instance (Generics.Deriving.Foldable.GFoldable' f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Internal.Generics.:+: g)
instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Internal.Generics.:.: g)
instance Generics.Deriving.Foldable.GFoldable' (GHC.Internal.Generics.K1 i c)
instance Generics.Deriving.Foldable.GFoldable' f => Generics.Deriving.Foldable.GFoldable' (GHC.Internal.Generics.M1 i c f)
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.Par1
instance Generics.Deriving.Foldable.GFoldable f => Generics.Deriving.Foldable.GFoldable' (GHC.Internal.Generics.Rec1 f)
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.U1
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UAddr
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UChar
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UDouble
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UFloat
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UInt
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.UWord
instance Generics.Deriving.Foldable.GFoldable' GHC.Internal.Generics.V1
instance Generics.Deriving.Foldable.GFoldable (Data.Semigroup.Arg a)
instance Generics.Deriving.Foldable.GFoldable Data.Complex.Complex
instance Generics.Deriving.Foldable.GFoldable (GHC.Internal.Data.Functor.Const.Const m)
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Ord.Down
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Semigroup.Internal.Dual
instance Generics.Deriving.Foldable.GFoldable (GHC.Internal.Data.Either.Either a)
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.First
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Monoid.First
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Functor.Identity.Identity
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Last
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Monoid.Last
instance Generics.Deriving.Foldable.GFoldable []
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Max
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Maybe.Maybe
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Min
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Base.NonEmpty
instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable g) => Generics.Deriving.Foldable.GFoldable (Data.Functor.Product.Product f g)
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Semigroup.Internal.Product
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Proxy.Proxy
instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable g) => Generics.Deriving.Foldable.GFoldable (Data.Functor.Sum.Sum f g)
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Data.Semigroup.Internal.Sum
instance Generics.Deriving.Foldable.GFoldable ((,) a)
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Foldable.GFoldable GHC.Internal.Functor.ZipList.ZipList

module Generics.Deriving.Eq
class GEq a
geq :: GEq a => a -> a -> Bool
($dmgeq) :: (GEq a, Generic a, GEq' (Rep a)) => a -> a -> Bool
geqdefault :: (Generic a, GEq' (Rep a)) => a -> a -> Bool
class GEq' (f :: k -> Type)
geq' :: forall (a :: k). GEq' f => f a -> f a -> Bool
instance forall k (a :: k -> *) (b :: k -> *). (Generics.Deriving.Eq.GEq' a, Generics.Deriving.Eq.GEq' b) => Generics.Deriving.Eq.GEq' (a GHC.Internal.Generics.:*: b)
instance forall k (a :: k -> *) (b :: k -> *). (Generics.Deriving.Eq.GEq' a, Generics.Deriving.Eq.GEq' b) => Generics.Deriving.Eq.GEq' (a GHC.Internal.Generics.:+: b)
instance Generics.Deriving.Eq.GEq c => Generics.Deriving.Eq.GEq' (GHC.Internal.Generics.K1 i c)
instance forall k (a :: k -> *) i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Eq.GEq' a => Generics.Deriving.Eq.GEq' (GHC.Internal.Generics.M1 i c a)
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.U1
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UAddr
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UChar
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UDouble
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UFloat
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UInt
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.UWord
instance Generics.Deriving.Eq.GEq' GHC.Internal.Generics.V1
instance forall k (f :: k -> *) (p :: k) (g :: k -> *). (Generics.Deriving.Eq.GEq (f p), Generics.Deriving.Eq.GEq (g p)) => Generics.Deriving.Eq.GEq ((GHC.Internal.Generics.:*:) f g p)
instance forall k (f :: k -> *) (p :: k) (g :: k -> *). (Generics.Deriving.Eq.GEq (f p), Generics.Deriving.Eq.GEq (g p)) => Generics.Deriving.Eq.GEq ((GHC.Internal.Generics.:+:) f g p)
instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Eq.GEq (f (g p)) => Generics.Deriving.Eq.GEq ((GHC.Internal.Generics.:.:) f g p)
instance Generics.Deriving.Eq.GEq GHC.Internal.Data.Semigroup.Internal.All
instance forall k (f :: k -> *) (a :: k). Generics.Deriving.Eq.GEq (f a) => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Semigroup.Internal.Alt f a)
instance Generics.Deriving.Eq.GEq GHC.Internal.Data.Semigroup.Internal.Any
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Arg a b)
instance Generics.Deriving.Eq.GEq GHC.Internal.Generics.Associativity
instance Generics.Deriving.Eq.GEq GHC.Types.Bool
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Handle.Types.BufferMode
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CBlkCnt
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CBlkSize
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CBool
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CCc
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CChar
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CClock
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CClockId
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CDev
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CDouble
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CFloat
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CFsBlkCnt
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CFsFilCnt
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CGid
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CId
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CIno
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CInt
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CIntMax
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CIntPtr
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CKey
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CLLong
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CLong
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CMode
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CNlink
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.COff
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CPid
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CPtrdiff
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CRLim
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CSChar
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CSUSeconds
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CShort
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CSigAtomic
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CSize
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CSpeed
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CSsize
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CTcflag
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CTime
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CTimer
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUChar
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUInt
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUIntMax
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUIntPtr
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CULLong
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CULong
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUSeconds
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CUShort
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.CUid
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Types.CWchar
instance Generics.Deriving.Eq.GEq GHC.Types.Char
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Complex.Complex a)
instance forall k a (b :: k). Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Functor.Const.Const a b)
instance Generics.Deriving.Eq.GEq GHC.Internal.Generics.DecidedStrictness
instance Generics.Deriving.Eq.GEq GHC.Types.Double
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Ord.Down a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Semigroup.Internal.Dual a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b) => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Either.Either a b)
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.C.Error.Errno
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Exception.ExitCode
instance Generics.Deriving.Eq.GEq GHC.Internal.System.Posix.Types.Fd
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.First a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Monoid.First a)
instance Generics.Deriving.Eq.GEq GHC.Internal.Generics.Fixity
instance Generics.Deriving.Eq.GEq GHC.Types.Float
instance Generics.Deriving.Eq.GEq (GHC.Internal.ForeignPtr.ForeignPtr a)
instance Generics.Deriving.Eq.GEq (GHC.Internal.Ptr.FunPtr a)
instance Generics.Deriving.Eq.GEq GHC.Internal.Unicode.GeneralCategory
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Handle.Types.Handle
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Handle.HandlePosn
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Exception.IOErrorType
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Exception.IOError
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.IOMode.IOMode
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Functor.Identity.Identity a)
instance Generics.Deriving.Eq.GEq GHC.Types.Int
instance Generics.Deriving.Eq.GEq GHC.Internal.Int.Int16
instance Generics.Deriving.Eq.GEq GHC.Internal.Int.Int32
instance Generics.Deriving.Eq.GEq GHC.Internal.Int.Int64
instance Generics.Deriving.Eq.GEq GHC.Internal.Int.Int8
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.Ptr.IntPtr
instance Generics.Deriving.Eq.GEq GHC.Num.Integer.Integer
instance forall k c i (p :: k). Generics.Deriving.Eq.GEq c => Generics.Deriving.Eq.GEq (GHC.Internal.Generics.K1 i c p)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Last a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Monoid.Last a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq [a]
instance forall k (f :: k -> *) (p :: k) i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Eq.GEq (f p) => Generics.Deriving.Eq.GEq (GHC.Internal.Generics.M1 i c f p)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Max a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Maybe.Maybe a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Min a)
instance Generics.Deriving.Eq.GEq GHC.Num.Natural.Natural
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Base.NonEmpty a)
instance Generics.Deriving.Eq.GEq GHC.Types.Ordering
instance Generics.Deriving.Eq.GEq p => Generics.Deriving.Eq.GEq (GHC.Internal.Generics.Par1 p)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Semigroup.Internal.Product a)
instance forall k (s :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Data.Proxy.Proxy s)
instance Generics.Deriving.Eq.GEq (GHC.Internal.Ptr.Ptr a)
instance forall k (f :: k -> *) (p :: k). Generics.Deriving.Eq.GEq (f p) => Generics.Deriving.Eq.GEq (GHC.Internal.Generics.Rec1 f p)
instance Generics.Deriving.Eq.GEq GHC.Internal.IO.Device.SeekMode
instance Generics.Deriving.Eq.GEq GHC.Internal.Generics.SourceStrictness
instance Generics.Deriving.Eq.GEq GHC.Internal.Generics.SourceUnpackedness
instance Generics.Deriving.Eq.GEq (GHC.Internal.Stable.StablePtr a)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Data.Semigroup.Internal.Sum a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b) => Generics.Deriving.Eq.GEq (a, b)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Eq.GEq c) => Generics.Deriving.Eq.GEq (a, b, c)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Eq.GEq d) => Generics.Deriving.Eq.GEq (a, b, c, d)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Eq.GEq e) => Generics.Deriving.Eq.GEq (a, b, c, d, e)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Eq.GEq e, Generics.Deriving.Eq.GEq f) => Generics.Deriving.Eq.GEq (a, b, c, d, e, f)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Eq.GEq e, Generics.Deriving.Eq.GEq f, Generics.Deriving.Eq.GEq g) => Generics.Deriving.Eq.GEq (a, b, c, d, e, f, g)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.U1 p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UAddr p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UChar p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UDouble p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UFloat p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UInt p)
instance forall k (p :: k). Generics.Deriving.Eq.GEq (GHC.Internal.Generics.UWord p)
instance Generics.Deriving.Eq.GEq ()
instance Generics.Deriving.Eq.GEq GHC.Internal.Data.Version.Version
instance Generics.Deriving.Eq.GEq GHC.Internal.Base.Void
instance Generics.Deriving.Eq.GEq GHC.Types.Word
instance Generics.Deriving.Eq.GEq GHC.Internal.Word.Word16
instance Generics.Deriving.Eq.GEq GHC.Internal.Word.Word32
instance Generics.Deriving.Eq.GEq GHC.Internal.Word.Word64
instance Generics.Deriving.Eq.GEq GHC.Internal.Word.Word8
instance Generics.Deriving.Eq.GEq GHC.Internal.Foreign.Ptr.WordPtr
instance Generics.Deriving.Eq.GEq m => Generics.Deriving.Eq.GEq (Data.Semigroup.WrappedMonoid m)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Internal.Functor.ZipList.ZipList a)

module Generics.Deriving.Enum
class GEnum a
genum :: GEnum a => [a]
($dmgenum) :: (GEnum a, Generic a, Enum' (Rep a)) => [a]
genumDefault :: (Generic a, Enum' (Rep a)) => [a]
toEnumDefault :: (Generic a, Enum' (Rep a)) => Int -> a
fromEnumDefault :: (GEq a, Generic a, Enum' (Rep a)) => a -> Int
class Enum' (f :: k -> Type)
enum' :: forall (a :: k). Enum' f => [f a]
class Ord a => GIx a

-- | The list of values in the subrange defined by a bounding pair.
range :: GIx a => (a, a) -> [a]
($dmrange) :: (GIx a, GEq a, Generic a, Enum' (Rep a)) => (a, a) -> [a]

-- | The position of a subscript in the subrange.
index :: GIx a => (a, a) -> a -> Int
($dmindex) :: (GIx a, GEq a, Generic a, Enum' (Rep a)) => (a, a) -> a -> Int

-- | Returns <a>True</a> the given subscript lies in the range defined the
--   bounding pair.
inRange :: GIx a => (a, a) -> a -> Bool
($dminRange) :: (GIx a, GEq a, Generic a, Enum' (Rep a)) => (a, a) -> a -> Bool
rangeDefault :: (GEq a, Generic a, Enum' (Rep a)) => (a, a) -> [a]
indexDefault :: (GEq a, Generic a, Enum' (Rep a)) => (a, a) -> a -> Int
inRangeDefault :: (GEq a, Generic a, Enum' (Rep a)) => (a, a) -> a -> Bool
instance forall k (f :: k -> *) (g :: k -> *). (Generics.Deriving.Enum.Enum' f, Generics.Deriving.Enum.Enum' g) => Generics.Deriving.Enum.Enum' (f GHC.Internal.Generics.:*: g)
instance forall k (f :: k -> *) (g :: k -> *). (Generics.Deriving.Enum.Enum' f, Generics.Deriving.Enum.Enum' g) => Generics.Deriving.Enum.Enum' (f GHC.Internal.Generics.:+: g)
instance Generics.Deriving.Enum.GEnum c => Generics.Deriving.Enum.Enum' (GHC.Internal.Generics.K1 i c)
instance forall k (f :: k -> *) i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Enum.Enum' f => Generics.Deriving.Enum.Enum' (GHC.Internal.Generics.M1 i c f)
instance Generics.Deriving.Enum.Enum' GHC.Internal.Generics.U1
instance forall k (f :: k -> *) (p :: k) (g :: k -> *). (Generics.Deriving.Enum.GEnum (f p), Generics.Deriving.Enum.GEnum (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Internal.Generics.:*:) f g p)
instance forall k (f :: k -> *) (p :: k) (g :: k -> *). (Generics.Deriving.Enum.GEnum (f p), Generics.Deriving.Enum.GEnum (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Internal.Generics.:+:) f g p)
instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Enum.GEnum (f (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Internal.Generics.:.:) f g p)
instance Generics.Deriving.Enum.GEnum GHC.Internal.Data.Semigroup.Internal.All
instance forall k (f :: k -> *) (a :: k). Generics.Deriving.Enum.GEnum (f a) => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Semigroup.Internal.Alt f a)
instance Generics.Deriving.Enum.GEnum GHC.Internal.Data.Semigroup.Internal.Any
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GEnum (Data.Semigroup.Arg a b)
instance Generics.Deriving.Enum.GEnum GHC.Internal.Generics.Associativity
instance Generics.Deriving.Enum.GEnum GHC.Types.Bool
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CBlkCnt
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CBlkSize
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CBool
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CCc
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CChar
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CClock
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CClockId
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CDev
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CDouble
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CFloat
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CFsBlkCnt
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CFsFilCnt
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CGid
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CId
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CIno
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CInt
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CIntMax
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CIntPtr
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CKey
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CLLong
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CLong
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CMode
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CNlink
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.COff
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CPid
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CPtrdiff
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CRLim
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CSChar
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CSUSeconds
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CShort
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CSigAtomic
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CSize
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CSpeed
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CSsize
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CTcflag
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CTime
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUChar
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUInt
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUIntMax
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUIntPtr
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CULLong
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CULong
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUSeconds
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CUShort
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.CUid
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.C.Types.CWchar
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Complex.Complex a)
instance forall k a (b :: k). Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Functor.Const.Const a b)
instance Generics.Deriving.Enum.GEnum GHC.Types.Double
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Semigroup.Internal.Dual a)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Either.Either a b)
instance Generics.Deriving.Enum.GEnum GHC.Internal.IO.Exception.ExitCode
instance Generics.Deriving.Enum.GEnum GHC.Internal.System.Posix.Types.Fd
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.First a)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Monoid.First a)
instance Generics.Deriving.Enum.GEnum GHC.Internal.Generics.Fixity
instance Generics.Deriving.Enum.GEnum GHC.Types.Float
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Functor.Identity.Identity a)
instance Generics.Deriving.Enum.GEnum GHC.Types.Int
instance Generics.Deriving.Enum.GEnum GHC.Internal.Int.Int16
instance Generics.Deriving.Enum.GEnum GHC.Internal.Int.Int32
instance Generics.Deriving.Enum.GEnum GHC.Internal.Int.Int64
instance Generics.Deriving.Enum.GEnum GHC.Internal.Int.Int8
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.Ptr.IntPtr
instance Generics.Deriving.Enum.GEnum GHC.Num.Integer.Integer
instance forall k c i (p :: k). Generics.Deriving.Enum.GEnum c => Generics.Deriving.Enum.GEnum (GHC.Internal.Generics.K1 i c p)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.Last a)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Monoid.Last a)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum [a]
instance forall k (f :: k -> *) (p :: k) i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Enum.GEnum (f p) => Generics.Deriving.Enum.GEnum (GHC.Internal.Generics.M1 i c f p)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.Max a)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Maybe.Maybe a)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.Min a)
instance Generics.Deriving.Enum.GEnum GHC.Num.Natural.Natural
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Base.NonEmpty a)
instance Generics.Deriving.Enum.GEnum GHC.Types.Ordering
instance Generics.Deriving.Enum.GEnum p => Generics.Deriving.Enum.GEnum (GHC.Internal.Generics.Par1 p)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Semigroup.Internal.Product a)
instance forall k (s :: k). Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Proxy.Proxy s)
instance forall k (f :: k -> *) (p :: k). Generics.Deriving.Enum.GEnum (f p) => Generics.Deriving.Enum.GEnum (GHC.Internal.Generics.Rec1 f p)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Data.Semigroup.Internal.Sum a)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GEnum (a, b)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GEnum c) => Generics.Deriving.Enum.GEnum (a, b, c)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GEnum d) => Generics.Deriving.Enum.GEnum (a, b, c, d)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GEnum e) => Generics.Deriving.Enum.GEnum (a, b, c, d, e)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GEnum e, Generics.Deriving.Enum.GEnum f) => Generics.Deriving.Enum.GEnum (a, b, c, d, e, f)
instance (Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GEnum e, Generics.Deriving.Enum.GEnum f, Generics.Deriving.Enum.GEnum g) => Generics.Deriving.Enum.GEnum (a, b, c, d, e, f, g)
instance forall k (p :: k). Generics.Deriving.Enum.GEnum (GHC.Internal.Generics.U1 p)
instance Generics.Deriving.Enum.GEnum ()
instance Generics.Deriving.Enum.GEnum GHC.Types.Word
instance Generics.Deriving.Enum.GEnum GHC.Internal.Word.Word16
instance Generics.Deriving.Enum.GEnum GHC.Internal.Word.Word32
instance Generics.Deriving.Enum.GEnum GHC.Internal.Word.Word64
instance Generics.Deriving.Enum.GEnum GHC.Internal.Word.Word8
instance Generics.Deriving.Enum.GEnum GHC.Internal.Foreign.Ptr.WordPtr
instance Generics.Deriving.Enum.GEnum m => Generics.Deriving.Enum.GEnum (Data.Semigroup.WrappedMonoid m)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Internal.Functor.ZipList.ZipList a)
instance Generics.Deriving.Enum.GIx GHC.Internal.Data.Semigroup.Internal.All
instance forall k (f :: k -> *) (a :: k). (Generics.Deriving.Eq.GEq (f a), Generics.Deriving.Enum.GEnum (f a), Generics.Deriving.Enum.GIx (f a)) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Semigroup.Internal.Alt f a)
instance Generics.Deriving.Enum.GIx GHC.Internal.Data.Semigroup.Internal.Any
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GIx (Data.Semigroup.Arg a b)
instance Generics.Deriving.Enum.GIx GHC.Internal.Generics.Associativity
instance Generics.Deriving.Enum.GIx GHC.Types.Bool
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CBlkCnt
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CBlkSize
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CBool
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CChar
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CClockId
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CFsBlkCnt
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CFsFilCnt
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CGid
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CId
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CIno
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CInt
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CIntMax
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CIntPtr
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CKey
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CLLong
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CLong
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CMode
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CNlink
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.COff
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CPid
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CPtrdiff
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CRLim
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CSChar
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CShort
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CSigAtomic
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CSize
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CSsize
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CTcflag
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CUChar
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CUInt
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CUIntMax
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CUIntPtr
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CULLong
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CULong
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CUShort
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.CUid
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.C.Types.CWchar
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Semigroup.Internal.Dual a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Either.Either a b)
instance Generics.Deriving.Enum.GIx GHC.Internal.IO.Exception.ExitCode
instance Generics.Deriving.Enum.GIx GHC.Internal.System.Posix.Types.Fd
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.First a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Monoid.First a)
instance Generics.Deriving.Enum.GIx GHC.Internal.Generics.Fixity
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Functor.Identity.Identity a)
instance Generics.Deriving.Enum.GIx GHC.Types.Int
instance Generics.Deriving.Enum.GIx GHC.Internal.Int.Int16
instance Generics.Deriving.Enum.GIx GHC.Internal.Int.Int32
instance Generics.Deriving.Enum.GIx GHC.Internal.Int.Int64
instance Generics.Deriving.Enum.GIx GHC.Internal.Int.Int8
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.Ptr.IntPtr
instance Generics.Deriving.Enum.GIx GHC.Num.Integer.Integer
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Last a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Monoid.Last a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx [a]
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Max a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Maybe.Maybe a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Min a)
instance Generics.Deriving.Enum.GIx GHC.Num.Natural.Natural
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Base.NonEmpty a)
instance Generics.Deriving.Enum.GIx GHC.Types.Ordering
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Semigroup.Internal.Product a)
instance forall k (s :: k). Generics.Deriving.Enum.GIx (GHC.Internal.Data.Proxy.Proxy s)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (GHC.Internal.Data.Semigroup.Internal.Sum a)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b) => Generics.Deriving.Enum.GIx (a, b)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GIx c) => Generics.Deriving.Enum.GIx (a, b, c)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GIx c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GIx d) => Generics.Deriving.Enum.GIx (a, b, c, d)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GIx c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GIx d, Generics.Deriving.Eq.GEq e, Generics.Deriving.Enum.GEnum e, Generics.Deriving.Enum.GIx e) => Generics.Deriving.Enum.GIx (a, b, c, d, e)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GIx c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GIx d, Generics.Deriving.Eq.GEq e, Generics.Deriving.Enum.GEnum e, Generics.Deriving.Enum.GIx e, Generics.Deriving.Eq.GEq f, Generics.Deriving.Enum.GEnum f, Generics.Deriving.Enum.GIx f) => Generics.Deriving.Enum.GIx (a, b, c, d, e, f)
instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Eq.GEq b, Generics.Deriving.Enum.GEnum b, Generics.Deriving.Enum.GIx b, Generics.Deriving.Eq.GEq c, Generics.Deriving.Enum.GEnum c, Generics.Deriving.Enum.GIx c, Generics.Deriving.Eq.GEq d, Generics.Deriving.Enum.GEnum d, Generics.Deriving.Enum.GIx d, Generics.Deriving.Eq.GEq e, Generics.Deriving.Enum.GEnum e, Generics.Deriving.Enum.GIx e, Generics.Deriving.Eq.GEq f, Generics.Deriving.Enum.GEnum f, Generics.Deriving.Enum.GIx f, Generics.Deriving.Eq.GEq g, Generics.Deriving.Enum.GEnum g, Generics.Deriving.Enum.GIx g) => Generics.Deriving.Enum.GIx (a, b, c, d, e, f, g)
instance Generics.Deriving.Enum.GIx ()
instance Generics.Deriving.Enum.GIx GHC.Types.Word
instance Generics.Deriving.Enum.GIx GHC.Internal.Word.Word16
instance Generics.Deriving.Enum.GIx GHC.Internal.Word.Word32
instance Generics.Deriving.Enum.GIx GHC.Internal.Word.Word64
instance Generics.Deriving.Enum.GIx GHC.Internal.Word.Word8
instance Generics.Deriving.Enum.GIx GHC.Internal.Foreign.Ptr.WordPtr
instance (Generics.Deriving.Eq.GEq m, Generics.Deriving.Enum.GEnum m, Generics.Deriving.Enum.GIx m) => Generics.Deriving.Enum.GIx (Data.Semigroup.WrappedMonoid m)

module Generics.Deriving.Copoint
class GCopoint (d :: Type -> Type)
gcopoint :: GCopoint d => d a -> a
($dmgcopoint) :: (GCopoint d, Generic1 d, GCopoint' (Rep1 d)) => d a -> a
gcopointdefault :: (Generic1 d, GCopoint' (Rep1 d)) => d a -> a
class GCopoint' (t :: Type -> Type)
gcopoint' :: GCopoint' t => t a -> Maybe a
instance (Generics.Deriving.Copoint.GCopoint' f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Internal.Generics.:*: g)
instance (Generics.Deriving.Copoint.GCopoint' f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Internal.Generics.:+: g)
instance (Generics.Deriving.Copoint.GCopoint f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Internal.Generics.:.: g)
instance Generics.Deriving.Copoint.GCopoint' (GHC.Internal.Generics.K1 i c)
instance Generics.Deriving.Copoint.GCopoint' f => Generics.Deriving.Copoint.GCopoint' (GHC.Internal.Generics.M1 i c f)
instance Generics.Deriving.Copoint.GCopoint' GHC.Internal.Generics.Par1
instance Generics.Deriving.Copoint.GCopoint f => Generics.Deriving.Copoint.GCopoint' (GHC.Internal.Generics.Rec1 f)
instance Generics.Deriving.Copoint.GCopoint' GHC.Internal.Generics.U1
instance Generics.Deriving.Copoint.GCopoint' GHC.Internal.Generics.V1
instance Generics.Deriving.Copoint.GCopoint f => Generics.Deriving.Copoint.GCopoint (GHC.Internal.Data.Semigroup.Internal.Alt f)
instance Generics.Deriving.Copoint.GCopoint (Data.Semigroup.Arg a)
instance Generics.Deriving.Copoint.GCopoint GHC.Internal.Data.Ord.Down
instance Generics.Deriving.Copoint.GCopoint GHC.Internal.Data.Semigroup.Internal.Dual
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.First
instance Generics.Deriving.Copoint.GCopoint GHC.Internal.Data.Functor.Identity.Identity
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Last
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Max
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Min
instance Generics.Deriving.Copoint.GCopoint GHC.Internal.Data.Semigroup.Internal.Sum
instance (Generics.Deriving.Copoint.GCopoint f, Generics.Deriving.Copoint.GCopoint g) => Generics.Deriving.Copoint.GCopoint (Data.Functor.Sum.Sum f g)
instance Generics.Deriving.Copoint.GCopoint ((,) a)
instance Generics.Deriving.Copoint.GCopoint ((,,) a b)
instance Generics.Deriving.Copoint.GCopoint ((,,,) a b c)
instance Generics.Deriving.Copoint.GCopoint ((,,,,) a b c d)
instance Generics.Deriving.Copoint.GCopoint ((,,,,,) a b c d e)
instance Generics.Deriving.Copoint.GCopoint ((,,,,,,) a b c d e f)
instance Generics.Deriving.Copoint.GCopoint m => Generics.Deriving.Copoint.GCopoint (Control.Applicative.WrappedMonad m)
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.WrappedMonoid


module Generics.Deriving.ConNames
class ConNames (f :: k -> Type)
gconNames :: forall (a :: k). ConNames f => f a -> [String]
gconNameOf :: forall (a :: k). ConNames f => f a -> String

-- | Return the name of all the constructors of the type of the given term.
conNames :: (Generic a, ConNames (Rep a)) => a -> [String]

-- | Return the name of the constructor of the given term
conNameOf :: (ConNames (Rep a), Generic a) => a -> String
instance forall k (f :: k -> *) (g :: k -> *). (Generics.Deriving.ConNames.ConNames f, Generics.Deriving.ConNames.ConNames g) => Generics.Deriving.ConNames.ConNames (f GHC.Internal.Generics.:+: g)
instance forall k (f :: k -> *) (c :: GHC.Internal.Generics.Meta). Generics.Deriving.ConNames.ConNames f => Generics.Deriving.ConNames.ConNames (GHC.Internal.Generics.D1 c f)
instance forall k (c :: GHC.Internal.Generics.Meta) (f :: k -> *). GHC.Internal.Generics.Constructor c => Generics.Deriving.ConNames.ConNames (GHC.Internal.Generics.C1 c f)

module Generics.Deriving.Semigroup
class GSemigroup a
gsappend :: GSemigroup a => a -> a -> a
($dmgsappend) :: (GSemigroup a, Generic a, GSemigroup' (Rep a)) => a -> a -> a
gstimes :: (GSemigroup a, Integral b) => b -> a -> a
gsconcat :: GSemigroup a => NonEmpty a -> a
infixr 6 `gsappend`
gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a
infixr 6 `gsappenddefault`
class GSemigroup' (f :: k -> Type)
gsappend' :: forall (x :: k). GSemigroup' f => f x -> f x -> f x
infixr 6 `gsappend'`
instance Generics.Deriving.Monoid.Internal.GMonoid m => Generics.Deriving.Semigroup.Internal.GSemigroup (Data.Semigroup.WrappedMonoid m)

module Generics.Deriving.Monoid
newtype Sum a
Sum :: a -> Sum a
[getSum] :: Sum a -> a
class Semigroup a => Monoid a
mempty :: Monoid a => a
mappend :: Monoid a => a -> a -> a
mconcat :: Monoid a => [a] -> a
newtype Alt (f :: k -> Type) (a :: k)
Alt :: f a -> Alt (f :: k -> Type) (a :: k)
[getAlt] :: Alt (f :: k -> Type) (a :: k) -> f a
newtype Dual a
Dual :: a -> Dual a
[getDual] :: Dual a -> a
newtype First a
First :: Maybe a -> First a
[getFirst] :: First a -> Maybe a
newtype Last a
Last :: Maybe a -> Last a
[getLast] :: Last a -> Maybe a
newtype All
All :: Bool -> All
[getAll] :: All -> Bool
newtype Any
Any :: Bool -> Any
[getAny] :: Any -> Bool
newtype Product a
Product :: a -> Product a
[getProduct] :: Product a -> a
newtype Endo a
Endo :: (a -> a) -> Endo a
[appEndo] :: Endo a -> a -> a
class GSemigroup a => GMonoid a

-- | Generic <a>mempty</a>
gmempty :: GMonoid a => a
($dmgmempty) :: (GMonoid a, Generic a, GMonoid' (Rep a)) => a

-- | Generic <a>mappend</a>
gmappend :: GMonoid a => a -> a -> a
($dmgmappend) :: (GMonoid a, Generic a, GMonoid' (Rep a)) => a -> a -> a

-- | Generic <a>mconcat</a>
gmconcat :: GMonoid a => [a] -> a
gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a
gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a
class GSemigroup' f => GMonoid' (f :: k -> Type)
gmempty' :: forall (x :: k). GMonoid' f => f x
gmappend' :: forall (x :: k). GMonoid' f => f x -> f x -> f x
memptydefault :: (Generic a, Monoid' (Rep a)) => a
mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a
class Monoid' (f :: k -> Type)
mempty' :: forall (x :: k). Monoid' f => f x
mappend' :: forall (x :: k). Monoid' f => f x -> f x -> f x
(<>) :: Semigroup a => a -> a -> a
newtype Ap (f :: k -> Type) (a :: k)
Ap :: f a -> Ap (f :: k -> Type) (a :: k)
[getAp] :: Ap (f :: k -> Type) (a :: k) -> f a
instance Generics.Deriving.Semigroup.Internal.GSemigroup a => Generics.Deriving.Monoid.Internal.GMonoid (GHC.Internal.Maybe.Maybe a)
instance Generics.Deriving.Monoid.Internal.GMonoid m => Generics.Deriving.Monoid.Internal.GMonoid (Data.Semigroup.WrappedMonoid m)

module Generics.Deriving.Show
class GShow a
gshowsPrec :: GShow a => Int -> a -> ShowS
($dmgshowsPrec) :: (GShow a, Generic a, GShow' (Rep a)) => Int -> a -> ShowS
gshows :: GShow a => a -> ShowS
gshow :: GShow a => a -> String
gshowList :: GShow a => [a] -> ShowS
gshowsPrecdefault :: (Generic a, GShow' (Rep a)) => Int -> a -> ShowS
class GShow' (f :: Type -> Type)
gshowsPrec' :: GShow' f => Type -> Int -> f a -> ShowS
isNullary :: GShow' f => f a -> Bool
instance (Generics.Deriving.Show.GShow' a, Generics.Deriving.Show.GShow' b) => Generics.Deriving.Show.GShow' (a GHC.Internal.Generics.:*: b)
instance (Generics.Deriving.Show.GShow' a, Generics.Deriving.Show.GShow' b) => Generics.Deriving.Show.GShow' (a GHC.Internal.Generics.:+: b)
instance Generics.Deriving.Show.GShow c => Generics.Deriving.Show.GShow' (GHC.Internal.Generics.K1 i c)
instance (Generics.Deriving.Show.GShow' a, GHC.Internal.Generics.Constructor c) => Generics.Deriving.Show.GShow' (GHC.Internal.Generics.M1 GHC.Internal.Generics.C c a)
instance (GHC.Internal.Generics.Selector s, Generics.Deriving.Show.GShow' a) => Generics.Deriving.Show.GShow' (GHC.Internal.Generics.M1 GHC.Internal.Generics.S s a)
instance Generics.Deriving.Show.GShow' a => Generics.Deriving.Show.GShow' (GHC.Internal.Generics.M1 GHC.Internal.Generics.D d a)
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.U1
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.UChar
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.UDouble
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.UFloat
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.UInt
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.UWord
instance Generics.Deriving.Show.GShow' GHC.Internal.Generics.V1
instance (Generics.Deriving.Show.GShow (f p), Generics.Deriving.Show.GShow (g p)) => Generics.Deriving.Show.GShow ((GHC.Internal.Generics.:*:) f g p)
instance (Generics.Deriving.Show.GShow (f p), Generics.Deriving.Show.GShow (g p)) => Generics.Deriving.Show.GShow ((GHC.Internal.Generics.:+:) f g p)
instance Generics.Deriving.Show.GShow (f (g p)) => Generics.Deriving.Show.GShow ((GHC.Internal.Generics.:.:) f g p)
instance Generics.Deriving.Show.GShow GHC.Internal.Data.Semigroup.Internal.All
instance Generics.Deriving.Show.GShow (f a) => Generics.Deriving.Show.GShow (GHC.Internal.Data.Semigroup.Internal.Alt f a)
instance Generics.Deriving.Show.GShow GHC.Internal.Data.Semigroup.Internal.Any
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b) => Generics.Deriving.Show.GShow (Data.Semigroup.Arg a b)
instance Generics.Deriving.Show.GShow GHC.Internal.Generics.Associativity
instance Generics.Deriving.Show.GShow GHC.Types.Bool
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Handle.Types.BufferMode
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CBool
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CChar
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CClock
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CDouble
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CFloat
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CInt
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CIntMax
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CIntPtr
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CLLong
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CLong
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CPtrdiff
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CSChar
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CSUSeconds
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CShort
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CSigAtomic
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CSize
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CTime
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUChar
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUInt
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUIntMax
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUIntPtr
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CULLong
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CULong
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUSeconds
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CUShort
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.C.Types.CWchar
instance Generics.Deriving.Show.GShow GHC.Types.Char
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Complex.Complex a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Functor.Const.Const a b)
instance Generics.Deriving.Show.GShow GHC.Types.Double
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Ord.Down a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Semigroup.Internal.Dual a)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b) => Generics.Deriving.Show.GShow (GHC.Internal.Data.Either.Either a b)
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Exception.ExitCode
instance Generics.Deriving.Show.GShow GHC.Internal.System.Posix.Types.Fd
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.First a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Monoid.First a)
instance Generics.Deriving.Show.GShow GHC.Internal.Generics.Fixity
instance Generics.Deriving.Show.GShow GHC.Types.Float
instance Generics.Deriving.Show.GShow (GHC.Internal.ForeignPtr.ForeignPtr a)
instance Generics.Deriving.Show.GShow (GHC.Internal.Ptr.FunPtr a)
instance Generics.Deriving.Show.GShow GHC.Internal.Unicode.GeneralCategory
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Handle.Types.Handle
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Handle.HandlePosn
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Exception.IOErrorType
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Exception.IOError
instance Generics.Deriving.Show.GShow GHC.Internal.IO.IOMode.IOMode
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Functor.Identity.Identity a)
instance Generics.Deriving.Show.GShow GHC.Types.Int
instance Generics.Deriving.Show.GShow GHC.Internal.Int.Int16
instance Generics.Deriving.Show.GShow GHC.Internal.Int.Int32
instance Generics.Deriving.Show.GShow GHC.Internal.Int.Int64
instance Generics.Deriving.Show.GShow GHC.Internal.Int.Int8
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.Ptr.IntPtr
instance Generics.Deriving.Show.GShow GHC.Num.Integer.Integer
instance Generics.Deriving.Show.GShow c => Generics.Deriving.Show.GShow (GHC.Internal.Generics.K1 i c p)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.Last a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Monoid.Last a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow [a]
instance Generics.Deriving.Show.GShow (f p) => Generics.Deriving.Show.GShow (GHC.Internal.Generics.M1 i c f p)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.Max a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Maybe.Maybe a)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.Min a)
instance Generics.Deriving.Show.GShow GHC.Num.Natural.Natural
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Base.NonEmpty a)
instance Generics.Deriving.Show.GShow GHC.Types.Ordering
instance Generics.Deriving.Show.GShow p => Generics.Deriving.Show.GShow (GHC.Internal.Generics.Par1 p)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Semigroup.Internal.Product a)
instance Generics.Deriving.Show.GShow (GHC.Internal.Data.Proxy.Proxy s)
instance Generics.Deriving.Show.GShow (GHC.Internal.Ptr.Ptr a)
instance Generics.Deriving.Show.GShow (f p) => Generics.Deriving.Show.GShow (GHC.Internal.Generics.Rec1 f p)
instance Generics.Deriving.Show.GShow GHC.Internal.IO.Device.SeekMode
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Data.Semigroup.Internal.Sum a)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b) => Generics.Deriving.Show.GShow (a, b)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b, Generics.Deriving.Show.GShow c) => Generics.Deriving.Show.GShow (a, b, c)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b, Generics.Deriving.Show.GShow c, Generics.Deriving.Show.GShow d) => Generics.Deriving.Show.GShow (a, b, c, d)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b, Generics.Deriving.Show.GShow c, Generics.Deriving.Show.GShow d, Generics.Deriving.Show.GShow e) => Generics.Deriving.Show.GShow (a, b, c, d, e)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b, Generics.Deriving.Show.GShow c, Generics.Deriving.Show.GShow d, Generics.Deriving.Show.GShow e, Generics.Deriving.Show.GShow f) => Generics.Deriving.Show.GShow (a, b, c, d, e, f)
instance (Generics.Deriving.Show.GShow a, Generics.Deriving.Show.GShow b, Generics.Deriving.Show.GShow c, Generics.Deriving.Show.GShow d, Generics.Deriving.Show.GShow e, Generics.Deriving.Show.GShow f, Generics.Deriving.Show.GShow g) => Generics.Deriving.Show.GShow (a, b, c, d, e, f, g)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.U1 p)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.UChar p)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.UDouble p)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.UFloat p)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.UInt p)
instance Generics.Deriving.Show.GShow (GHC.Internal.Generics.UWord p)
instance Generics.Deriving.Show.GShow ()
instance Generics.Deriving.Show.GShow GHC.Internal.Data.Version.Version
instance Generics.Deriving.Show.GShow GHC.Internal.Base.Void
instance Generics.Deriving.Show.GShow GHC.Types.Word
instance Generics.Deriving.Show.GShow GHC.Internal.Word.Word16
instance Generics.Deriving.Show.GShow GHC.Internal.Word.Word32
instance Generics.Deriving.Show.GShow GHC.Internal.Word.Word64
instance Generics.Deriving.Show.GShow GHC.Internal.Word.Word8
instance Generics.Deriving.Show.GShow GHC.Internal.Foreign.Ptr.WordPtr
instance Generics.Deriving.Show.GShow m => Generics.Deriving.Show.GShow (Data.Semigroup.WrappedMonoid m)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Internal.Functor.ZipList.ZipList a)

module Generics.Deriving.Traversable
class (GFunctor t, GFoldable t) => GTraversable (t :: Type -> Type)
gtraverse :: (GTraversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
($dmgtraverse) :: (GTraversable t, Generic1 t, GTraversable' (Rep1 t), Applicative f) => (a -> f b) -> t a -> f (t b)
gsequenceA :: (GTraversable t, Applicative f) => t (f a) -> f (t a)
gmapM :: (GTraversable t, Monad m) => (a -> m b) -> t a -> m (t b)
gsequence :: (GTraversable t, Monad m) => t (m a) -> m (t a)
gtraversedefault :: (Generic1 t, GTraversable' (Rep1 t), Applicative f) => (a -> f b) -> t a -> f (t b)
class GTraversable' (t :: Type -> Type)
gtraverse' :: (GTraversable' t, Applicative f) => (a -> f b) -> t a -> f (t b)
instance (Generics.Deriving.Traversable.GTraversable' f, Generics.Deriving.Traversable.GTraversable' g) => Generics.Deriving.Traversable.GTraversable' (f GHC.Internal.Generics.:*: g)
instance (Generics.Deriving.Traversable.GTraversable' f, Generics.Deriving.Traversable.GTraversable' g) => Generics.Deriving.Traversable.GTraversable' (f GHC.Internal.Generics.:+: g)
instance (Generics.Deriving.Traversable.GTraversable f, Generics.Deriving.Traversable.GTraversable' g) => Generics.Deriving.Traversable.GTraversable' (f GHC.Internal.Generics.:.: g)
instance Generics.Deriving.Traversable.GTraversable' (GHC.Internal.Generics.K1 i c)
instance Generics.Deriving.Traversable.GTraversable' f => Generics.Deriving.Traversable.GTraversable' (GHC.Internal.Generics.M1 i c f)
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.Par1
instance Generics.Deriving.Traversable.GTraversable f => Generics.Deriving.Traversable.GTraversable' (GHC.Internal.Generics.Rec1 f)
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.U1
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UAddr
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UChar
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UDouble
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UFloat
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UInt
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.UWord
instance Generics.Deriving.Traversable.GTraversable' GHC.Internal.Generics.V1
instance Generics.Deriving.Traversable.GTraversable (Data.Semigroup.Arg a)
instance Generics.Deriving.Traversable.GTraversable Data.Complex.Complex
instance Generics.Deriving.Traversable.GTraversable (GHC.Internal.Data.Functor.Const.Const m)
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Ord.Down
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Semigroup.Internal.Dual
instance Generics.Deriving.Traversable.GTraversable (GHC.Internal.Data.Either.Either a)
instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.First
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Monoid.First
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Functor.Identity.Identity
instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Last
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Monoid.Last
instance Generics.Deriving.Traversable.GTraversable []
instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Max
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Maybe.Maybe
instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Min
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Base.NonEmpty
instance (Generics.Deriving.Traversable.GTraversable f, Generics.Deriving.Traversable.GTraversable g) => Generics.Deriving.Traversable.GTraversable (Data.Functor.Product.Product f g)
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Semigroup.Internal.Product
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Proxy.Proxy
instance (Generics.Deriving.Traversable.GTraversable f, Generics.Deriving.Traversable.GTraversable g) => Generics.Deriving.Traversable.GTraversable (Data.Functor.Sum.Sum f g)
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Data.Semigroup.Internal.Sum
instance Generics.Deriving.Traversable.GTraversable ((,) a)
instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Traversable.GTraversable GHC.Internal.Functor.ZipList.ZipList


-- | mostly implemented by Sean Leather.
module Generics.Deriving.Uniplate
class Uniplate a
children :: Uniplate a => a -> [a]
($dmchildren) :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => a -> [a]
context :: Uniplate a => a -> [a] -> a
($dmcontext) :: (Uniplate a, Generic a, Context' (Rep a) a) => a -> [a] -> a
descend :: Uniplate a => (a -> a) -> a -> a
($dmdescend) :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
descendM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
($dmdescendM) :: (Uniplate a, Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a
transform :: Uniplate a => (a -> a) -> a -> a
($dmtransform) :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
transformM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
($dmtransformM) :: (Uniplate a, Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a
uniplate :: Uniplate a => a -> ([a], [a] -> a)
universe :: Uniplate a => a -> [a]
rewrite :: Uniplate a => (a -> Maybe a) -> a -> a
rewriteM :: (Monad m, Uniplate a) => (a -> m (Maybe a)) -> a -> m a
contexts :: Uniplate a => a -> [(a, a -> a)]
holes :: Uniplate a => a -> [(a, a -> a)]
para :: Uniplate a => (a -> [r] -> r) -> a -> r
childrendefault :: (Generic a, Uniplate' (Rep a) a) => a -> [a]
contextdefault :: (Generic a, Context' (Rep a) a) => a -> [a] -> a
descenddefault :: (Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
descendMdefault :: (Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a
transformdefault :: (Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
transformMdefault :: (Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a
class Uniplate' (f :: k -> Type) b
children' :: forall (a :: k). Uniplate' f b => f a -> [b]
descend' :: forall (a :: k). Uniplate' f b => (b -> b) -> f a -> f a
descendM' :: forall m (a :: k). (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f a)
transform' :: forall (a :: k). Uniplate' f b => (b -> b) -> f a -> f a
transformM' :: forall m (a :: k). (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f a)
class Context' (f :: k -> Type) b
context' :: forall (a :: k). Context' f b => f a -> [b] -> f a
instance forall k (g :: k -> *) b (f :: k -> *). Generics.Deriving.Uniplate.Context' g b => Generics.Deriving.Uniplate.Context' (f GHC.Internal.Generics.:*: g) b
instance forall k (g :: k -> *) a i (c :: GHC.Internal.Generics.Meta) j. Generics.Deriving.Uniplate.Context' g a => Generics.Deriving.Uniplate.Context' (GHC.Internal.Generics.M1 i c (GHC.Internal.Generics.K1 j a) GHC.Internal.Generics.:*: g) a
instance forall k (f :: k -> *) b (g :: k -> *). (Generics.Deriving.Uniplate.Context' f b, Generics.Deriving.Uniplate.Context' g b) => Generics.Deriving.Uniplate.Context' (f GHC.Internal.Generics.:+: g) b
instance Generics.Deriving.Uniplate.Context' (GHC.Internal.Generics.K1 i a) b
instance Generics.Deriving.Uniplate.Context' (GHC.Internal.Generics.K1 i a) a
instance forall k (f :: k -> *) b i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Uniplate.Context' f b => Generics.Deriving.Uniplate.Context' (GHC.Internal.Generics.M1 i c f) b
instance Generics.Deriving.Uniplate.Context' GHC.Internal.Generics.U1 b
instance forall k (f :: k -> *) b (g :: k -> *). (Generics.Deriving.Uniplate.Uniplate' f b, Generics.Deriving.Uniplate.Uniplate' g b) => Generics.Deriving.Uniplate.Uniplate' (f GHC.Internal.Generics.:*: g) b
instance forall k (f :: k -> *) b (g :: k -> *). (Generics.Deriving.Uniplate.Uniplate' f b, Generics.Deriving.Uniplate.Uniplate' g b) => Generics.Deriving.Uniplate.Uniplate' (f GHC.Internal.Generics.:+: g) b
instance Generics.Deriving.Uniplate.Uniplate' (GHC.Internal.Generics.K1 i a) b
instance Generics.Deriving.Uniplate.Uniplate a => Generics.Deriving.Uniplate.Uniplate' (GHC.Internal.Generics.K1 i a) a
instance forall k (f :: k -> *) b i (c :: GHC.Internal.Generics.Meta). Generics.Deriving.Uniplate.Uniplate' f b => Generics.Deriving.Uniplate.Uniplate' (GHC.Internal.Generics.M1 i c f) b
instance Generics.Deriving.Uniplate.Uniplate' GHC.Internal.Generics.U1 a
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Bool
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Char
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Double
instance Generics.Deriving.Uniplate.Uniplate (GHC.Internal.Data.Either.Either a b)
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Float
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Int
instance Generics.Deriving.Uniplate.Uniplate [a]
instance Generics.Deriving.Uniplate.Uniplate (GHC.Internal.Maybe.Maybe a)
instance Generics.Deriving.Uniplate.Uniplate (b, c)
instance Generics.Deriving.Uniplate.Uniplate (b, c, d)
instance Generics.Deriving.Uniplate.Uniplate (b, c, d, e)
instance Generics.Deriving.Uniplate.Uniplate (b, c, d, e, f)
instance Generics.Deriving.Uniplate.Uniplate (b, c, d, e, f, g)
instance Generics.Deriving.Uniplate.Uniplate (b, c, d, e, f, g, h)
instance Generics.Deriving.Uniplate.Uniplate ()


-- | GHC 8.6 introduced the <tt><a>DerivingVia</a></tt> language extension,
--   which means a typeclass instance can be derived from an existing
--   instance for an isomorphic type. Any newtype is isomorphic to the
--   underlying type. By implementing a typeclass once for the newtype, it
--   is possible to derive any typeclass for any type with a <a>Generic</a>
--   instance.
--   
--   For a number of classes, there are sensible default instantiations. In
--   older GHCs, these can be supplied in the class definition, using the
--   <tt><a>DefaultSignatures</a></tt> extension. However, only one default
--   can be provided! With <tt><a>DerivingVia</a></tt> it is now possible
--   to choose from many default instantiations.
--   
--   This package contains a number of such classes. This module
--   demonstrates how one might create a family of newtypes
--   (<a>Default</a>, <a>Default1</a>) for which such instances are
--   defined.
--   
--   One might then use <tt><a>DerivingVia</a></tt> as follows. The
--   implementations of the data types are elided here (they are
--   irrelevant). For most cases, either the deriving clause with the data
--   type definition or the standalone clause will work (for some types it
--   is necessary to supply the context explicitly using the latter form).
--   See the source of this module for the implementations of instances for
--   the <a>Default</a> family of newtypes and the source of the test suite
--   for some types which derive instances via these wrappers.
module Generics.Deriving.Default

-- | This newtype wrapper can be used to derive default instances for
--   classes taking an argument of kind <a>Type</a>.
newtype Default a
Default :: a -> Default a
[unDefault] :: Default a -> a

-- | This newtype wrapper can be used to derive default instances for
--   classes taking an argument of kind <tt><a>Type</a> -&gt;
--   <a>Type</a></tt>.
newtype Default1 (f :: Type -> Type) a
Default1 :: f a -> Default1 (f :: Type -> Type) a
[unDefault1] :: Default1 (f :: Type -> Type) a -> f a
instance (GHC.Internal.Generics.Generic1 f, Generics.Deriving.Copoint.GCopoint' (GHC.Internal.Generics.Rep1 f)) => Generics.Deriving.Copoint.GCopoint (Generics.Deriving.Default.Default1 f)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.Enum' (GHC.Internal.Generics.Rep a)) => Generics.Deriving.Enum.GEnum (Generics.Deriving.Default.Default a)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Eq.GEq' (GHC.Internal.Generics.Rep a)) => Generics.Deriving.Eq.GEq (Generics.Deriving.Default.Default a)
instance (GHC.Internal.Generics.Generic1 t, Generics.Deriving.Foldable.GFoldable' (GHC.Internal.Generics.Rep1 t)) => Generics.Deriving.Foldable.GFoldable (Generics.Deriving.Default.Default1 t)
instance (GHC.Internal.Generics.Generic1 f, Generics.Deriving.Functor.GFunctor' (GHC.Internal.Generics.Rep1 f)) => Generics.Deriving.Functor.GFunctor (Generics.Deriving.Default.Default1 f)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Monoid.Internal.GMonoid' (GHC.Internal.Generics.Rep a)) => Generics.Deriving.Monoid.Internal.GMonoid (Generics.Deriving.Default.Default a)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Semigroup.Internal.GSemigroup' (GHC.Internal.Generics.Rep a)) => Generics.Deriving.Semigroup.Internal.GSemigroup (Generics.Deriving.Default.Default a)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Show.GShow' (GHC.Internal.Generics.Rep a)) => Generics.Deriving.Show.GShow (Generics.Deriving.Default.Default a)
instance (GHC.Internal.Generics.Generic1 t, Generics.Deriving.Functor.GFunctor' (GHC.Internal.Generics.Rep1 t), Generics.Deriving.Foldable.GFoldable' (GHC.Internal.Generics.Rep1 t), Generics.Deriving.Traversable.GTraversable' (GHC.Internal.Generics.Rep1 t)) => Generics.Deriving.Traversable.GTraversable (Generics.Deriving.Default.Default1 t)
instance (GHC.Internal.Generics.Generic a, Generics.Deriving.Uniplate.Uniplate' (GHC.Internal.Generics.Rep a) a, Generics.Deriving.Uniplate.Context' (GHC.Internal.Generics.Rep a) a) => Generics.Deriving.Uniplate.Uniplate (Generics.Deriving.Default.Default a)

module Generics.Deriving


-- | This module contains Template Haskell code that can be used to
--   automatically generate the boilerplate code for the generic deriving
--   library.
--   
--   To use these functions, pass the name of a data type as an argument:
--   
--   <pre>
--   {-# LANGUAGE TemplateHaskell #-}
--   
--   data Example a = Example Int Char a
--   $(<a>deriveAll0</a>     ''Example) -- Derives Generic instance
--   $(<a>deriveAll1</a>     ''Example) -- Derives Generic1 instance
--   $(<a>deriveAll0And1</a> ''Example) -- Derives Generic and Generic1 instances
--   </pre>
--   
--   On GHC 7.4 or later, this code can also be used with data families. To
--   derive for a data family instance, pass the name of one of the
--   instance's constructors:
--   
--   <pre>
--   {-# LANGUAGE FlexibleInstances, TemplateHaskell, TypeFamilies #-}
--   
--   data family Family a b
--   newtype instance Family Char x = FamilyChar Char
--   data    instance Family Bool x = FamilyTrue | FamilyFalse
--   
--   $(<a>deriveAll0</a> 'FamilyChar) -- instance Generic (Family Char b) where ...
--   $(<a>deriveAll1</a> 'FamilyTrue) -- instance Generic1 (Family Bool) where ...
--   -- Alternatively, one could type $(deriveAll1 'FamilyFalse)
--   </pre>
module Generics.Deriving.TH

-- | Given the type and the name (as string) for the type to derive,
--   generate the <tt>Data</tt> instance, the <tt>Constructor</tt>
--   instances, and the <tt>Selector</tt> instances.
--   
--   On GHC 7.11 and up, this functionality is no longer used in GHC
--   generics, so this function generates no declarations.
deriveMeta :: Name -> Q [Dec]

-- | Given a datatype name, derive a datatype and instance of class
--   <a>Datatype</a>.
--   
--   On GHC 7.11 and up, this functionality is no longer used in GHC
--   generics, so this function generates no declarations.
deriveData :: Name -> Q [Dec]

-- | Given a datatype name, derive datatypes and instances of class
--   <tt>Constructor</tt>.
--   
--   On GHC 7.11 and up, this functionality is no longer used in GHC
--   generics, so this function generates no declarations.
deriveConstructors :: Name -> Q [Dec]

-- | Given a datatype name, derive datatypes and instances of class
--   <tt>Selector</tt>.
--   
--   On GHC 7.11 and up, this functionality is no longer used in GHC
--   generics, so this function generates no declarations.
deriveSelectors :: Name -> Q [Dec]

-- | A backwards-compatible synonym for <a>deriveAll0</a>.
deriveAll :: Name -> Q [Dec]

-- | Given the type and the name (as string) for the type to derive,
--   generate the <tt>Data</tt> instance, the <tt>Constructor</tt>
--   instances, the <tt>Selector</tt> instances, and the
--   <tt>Representable0</tt> instance.
deriveAll0 :: Name -> Q [Dec]

-- | Given the type and the name (as string) for the type to derive,
--   generate the <tt>Data</tt> instance, the <tt>Constructor</tt>
--   instances, the <tt>Selector</tt> instances, and the
--   <tt>Representable1</tt> instance.
deriveAll1 :: Name -> Q [Dec]

-- | Given the type and the name (as string) for the type to derive,
--   generate the <tt>Data</tt> instance, the <tt>Constructor</tt>
--   instances, the <tt>Selector</tt> instances, the
--   <tt>Representable0</tt> instance, and the <tt>Representable1</tt>
--   instance.
deriveAll0And1 :: Name -> Q [Dec]

-- | Given the type and the name (as string) for the Representable0 type
--   synonym to derive, generate the <tt>Representable0</tt> instance.
deriveRepresentable0 :: Name -> Q [Dec]

-- | Given the type and the name (as string) for the Representable1 type
--   synonym to derive, generate the <tt>Representable1</tt> instance.
deriveRepresentable1 :: Name -> Q [Dec]

-- | Derive only the <tt>Rep0</tt> type synonym. Not needed if
--   <a>deriveRepresentable0</a> is used.
deriveRep0 :: Name -> Q [Dec]

-- | Derive only the <tt>Rep1</tt> type synonym. Not needed if
--   <a>deriveRepresentable1</a> is used.
deriveRep1 :: Name -> Q [Dec]

-- | Generates the full <tt>Rep</tt> type inline. Since this type can be
--   quite large, it is recommended you only use this to define
--   <tt>Rep</tt>, e.g.,
--   
--   <pre>
--   type Rep (Foo (a :: k) b) = $(<a>makeRep0Inline</a> ''Foo [t| Foo (a :: k) b |])
--   </pre>
--   
--   You can then simply refer to <tt>Rep (Foo a b)</tt> elsewhere.
--   
--   Note that the type passed as an argument to <a>makeRep0Inline</a> must
--   match the type argument of <tt>Rep</tt> exactly, even up to including
--   the explicit kind signature on <tt>a</tt>. This is due to a limitation
--   of Template Haskell—without the kind signature, <a>makeRep0Inline</a>
--   has no way of figuring out the kind of <tt>a</tt>, and the generated
--   type might be completely wrong as a result!
makeRep0Inline :: Name -> Q Type -> Q Type

-- | Generates the <tt>Rep</tt> type synonym constructor (as opposed to
--   <a>deriveRep0</a>, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   <pre>
--   type Rep (Foo a b) = $(<a>makeRep0</a> ''Foo) a b
--   </pre>
--   
--   The use of <a>makeRep0</a> is generally discouraged, as it can
--   sometimes be difficult to predict the order in which you are expected
--   to pass type variables. As a result, <a>makeRep0Inline</a> is
--   recommended instead. However, <a>makeRep0Inline</a> is not usable on
--   GHC 7.0, 7.2, or 7.4 due to a GHC bug, so <a>makeRep0</a> still exists
--   for GHC 7.0, 7.2, and 7.4 users.
makeRep0 :: Name -> Q Type

-- | Generates the <tt>Rep</tt> type synonym constructor (as opposed to
--   <a>deriveRep0</a>, which generates the type synonym declaration)
--   applied to its type arguments. Unlike <a>makeRep0</a>, this also takes
--   a quoted <a>Type</a> as an argument, e.g.,
--   
--   <pre>
--   type Rep (Foo (a :: k) b) = $(<a>makeRep0FromType</a> ''Foo [t| Foo (a :: k) b |])
--   </pre>
--   
--   Note that the type passed as an argument to <a>makeRep0FromType</a>
--   must match the type argument of <tt>Rep</tt> exactly, even up to
--   including the explicit kind signature on <tt>a</tt>. This is due to a
--   limitation of Template Haskell—without the kind signature,
--   <a>makeRep0FromType</a> has no way of figuring out the kind of
--   <tt>a</tt>, and the generated type might be completely wrong as a
--   result!
--   
--   The use of <a>makeRep0FromType</a> is generally discouraged, since
--   <a>makeRep0Inline</a> does exactly the same thing but without having
--   to go through an intermediate type synonym, and as a result,
--   <a>makeRep0Inline</a> tends to be less buggy.
makeRep0FromType :: Name -> Q Type -> Q Type

-- | A backwards-compatible synonym for <a>makeFrom0</a>.
makeFrom :: Name -> Q Exp

-- | Generates a lambda expression which behaves like <tt>from</tt>.
makeFrom0 :: Name -> Q Exp

-- | A backwards-compatible synonym for <a>makeTo0</a>.
makeTo :: Name -> Q Exp

-- | Generates a lambda expression which behaves like <tt>to</tt>.
makeTo0 :: Name -> Q Exp

-- | Generates the full <tt>Rep1</tt> type inline. Since this type can be
--   quite large, it is recommended you only use this to define
--   <tt>Rep1</tt>, e.g.,
--   
--   <pre>
--   type Rep1 (Foo (a :: k)) = $(<a>makeRep0Inline</a> ''Foo [t| Foo (a :: k) |])
--   </pre>
--   
--   You can then simply refer to <tt>Rep1 (Foo a)</tt> elsewhere.
--   
--   Note that the type passed as an argument to <a>makeRep1Inline</a> must
--   match the type argument of <tt>Rep1</tt> exactly, even up to including
--   the explicit kind signature on <tt>a</tt>. This is due to a limitation
--   of Template Haskell—without the kind signature, <a>makeRep1Inline</a>
--   has no way of figuring out the kind of <tt>a</tt>, and the generated
--   type might be completely wrong as a result!
makeRep1Inline :: Name -> Q Type -> Q Type

-- | Generates the <tt>Rep1</tt> type synonym constructor (as opposed to
--   <a>deriveRep1</a>, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   <pre>
--   type Rep1 (Foo a) = $(<a>makeRep1</a> ''Foo) a
--   </pre>
--   
--   The use of <a>makeRep1</a> is generally discouraged, as it can
--   sometimes be difficult to predict the order in which you are expected
--   to pass type variables. As a result, <a>makeRep1Inline</a> is
--   recommended instead. However, <a>makeRep1Inline</a> is not usable on
--   GHC 7.0, 7.2, or 7.4 due to a GHC bug, so <a>makeRep1</a> still exists
--   for GHC 7.0, 7.2, and 7.4 users.
makeRep1 :: Name -> Q Type

-- | Generates the <tt>Rep1</tt> type synonym constructor (as opposed to
--   <a>deriveRep1</a>, which generates the type synonym declaration)
--   applied to its type arguments. Unlike <a>makeRep1</a>, this also takes
--   a quoted <a>Type</a> as an argument, e.g.,
--   
--   <pre>
--   type Rep1 (Foo (a :: k)) = $(<a>makeRep1FromType</a> ''Foo [t| Foo (a :: k) |])
--   </pre>
--   
--   Note that the type passed as an argument to <a>makeRep1FromType</a>
--   must match the type argument of <tt>Rep</tt> exactly, even up to
--   including the explicit kind signature on <tt>a</tt>. This is due to a
--   limitation of Template Haskell—without the kind signature,
--   <a>makeRep1FromType</a> has no way of figuring out the kind of
--   <tt>a</tt>, and the generated type might be completely wrong as a
--   result!
--   
--   The use of <a>makeRep1FromType</a> is generally discouraged, since
--   <a>makeRep1Inline</a> does exactly the same thing but without having
--   to go through an intermediate type synonym, and as a result,
--   <a>makeRep1Inline</a> tends to be less buggy.
makeRep1FromType :: Name -> Q Type -> Q Type

-- | Generates a lambda expression which behaves like <tt>from1</tt>.
makeFrom1 :: Name -> Q Exp

-- | Generates a lambda expression which behaves like <tt>to1</tt>.
makeTo1 :: Name -> Q Exp

-- | Additional options for configuring derived
--   <a>Generic</a>/<a>Generic1</a> instances using Template Haskell.
data Options
Options :: RepOptions -> KindSigOptions -> EmptyCaseOptions -> Options
[repOptions] :: Options -> RepOptions
[kindSigOptions] :: Options -> KindSigOptions
[emptyCaseOptions] :: Options -> EmptyCaseOptions

-- | Sensible default <a>Options</a>.
defaultOptions :: Options

-- | Configures whether <tt>Rep</tt>/<tt>Rep1</tt> type instances should be
--   defined inline in a derived <a>Generic</a>/<a>Generic1</a> instance
--   (<a>InlineRep</a>) or defined in terms of a type synonym
--   (<a>TypeSynonymRep</a>).
data RepOptions
InlineRep :: RepOptions
TypeSynonymRep :: RepOptions

-- | <a>InlineRep</a>, a sensible default <a>RepOptions</a>.
defaultRepOptions :: RepOptions

-- | <a>True</a> if explicit kind signatures should be used in derived
--   <a>Generic</a>/<a>Generic1</a> instances, <a>False</a> otherwise.
type KindSigOptions = Bool

-- | <a>True</a>, a sensible default <a>KindSigOptions</a>.
defaultKindSigOptions :: KindSigOptions

-- | <a>True</a> if generated code for empty data types should use the
--   <tt>EmptyCase</tt> extension, <a>False</a> otherwise. This has no
--   effect on GHCs before 7.8, since <tt>EmptyCase</tt> is only available
--   in 7.8 or later.
type EmptyCaseOptions = Bool

-- | Sensible default <a>EmptyCaseOptions</a>.
defaultEmptyCaseOptions :: EmptyCaseOptions

-- | Like <a>deriveAll0</a>, but takes an <a>Options</a> argument.
deriveAll0Options :: Options -> Name -> Q [Dec]

-- | Like <a>deriveAll1</a>, but takes an <a>Options</a> argument.
deriveAll1Options :: Options -> Name -> Q [Dec]

-- | Like <a>deriveAll0And1</a>, but takes an <a>Options</a> argument.
deriveAll0And1Options :: Options -> Name -> Q [Dec]

-- | Like <a>deriveRepresentable0</a>, but takes an <a>Options</a>
--   argument.
deriveRepresentable0Options :: Options -> Name -> Q [Dec]

-- | Like <a>deriveRepresentable1</a>, but takes an <a>Options</a>
--   argument.
deriveRepresentable1Options :: Options -> Name -> Q [Dec]

-- | Like <a>deriveRep0</a>, but takes an <a>KindSigOptions</a> argument.
deriveRep0Options :: KindSigOptions -> Name -> Q [Dec]

-- | Like <a>deriveRep1</a>, but takes an <a>KindSigOptions</a> argument.
deriveRep1Options :: KindSigOptions -> Name -> Q [Dec]

-- | Like <a>makeFrom0Options</a>, but takes an <a>EmptyCaseOptions</a>
--   argument.
makeFrom0Options :: EmptyCaseOptions -> Name -> Q Exp

-- | Like <a>makeTo0Options</a>, but takes an <a>EmptyCaseOptions</a>
--   argument.
makeTo0Options :: EmptyCaseOptions -> Name -> Q Exp

-- | Like <a>makeFrom1Options</a>, but takes an <a>EmptyCaseOptions</a>
--   argument.
makeFrom1Options :: EmptyCaseOptions -> Name -> Q Exp

-- | Like <a>makeTo1Options</a>, but takes an <a>EmptyCaseOptions</a>
--   argument.
makeTo1Options :: EmptyCaseOptions -> Name -> Q Exp
instance GHC.Classes.Eq Generics.Deriving.TH.Options
instance GHC.Classes.Eq Generics.Deriving.TH.RepOptions
instance GHC.Classes.Ord Generics.Deriving.TH.Options
instance GHC.Classes.Ord Generics.Deriving.TH.RepOptions
instance GHC.Internal.Read.Read Generics.Deriving.TH.Options
instance GHC.Internal.Read.Read Generics.Deriving.TH.RepOptions
instance GHC.Internal.Show.Show Generics.Deriving.TH.Options
instance GHC.Internal.Show.Show Generics.Deriving.TH.RepOptions
