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

module Generics.Deriving.Instances

module Generics.Deriving.Base

module Generics.Deriving.Functor
class GFunctor f
gmap :: GFunctor f => (a -> b) -> f a -> f b
gmap :: (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
gmap' :: GFunctor' f => (a -> b) -> f a -> f b
instance Generics.Deriving.Functor.GFunctor f => Generics.Deriving.Functor.GFunctor' (GHC.Generics.Rec1 f)
instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Generics.:.: g)
instance Generics.Deriving.Functor.GFunctor ((->) r)
instance Generics.Deriving.Functor.GFunctor ((,) a)
instance Generics.Deriving.Functor.GFunctor []
instance Generics.Deriving.Functor.GFunctor f => Generics.Deriving.Functor.GFunctor (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 (Data.Functor.Const.Const m)
instance Generics.Deriving.Functor.GFunctor Data.Ord.Down
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Internal.Dual
instance Generics.Deriving.Functor.GFunctor (Data.Either.Either a)
instance Generics.Deriving.Functor.GFunctor Data.Monoid.First
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.First
instance Generics.Deriving.Functor.GFunctor Data.Functor.Identity.Identity
instance Generics.Deriving.Functor.GFunctor GHC.Types.IO
instance Generics.Deriving.Functor.GFunctor Data.Monoid.Last
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Last
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Max
instance Generics.Deriving.Functor.GFunctor GHC.Maybe.Maybe
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Min
instance Generics.Deriving.Functor.GFunctor GHC.Base.NonEmpty
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Internal.Product
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 Data.Proxy.Proxy
instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Internal.Sum
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 Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Functor.GFunctor Control.Applicative.ZipList
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.V1
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.U1
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.Par1
instance Generics.Deriving.Functor.GFunctor' (GHC.Generics.K1 i c)
instance Generics.Deriving.Functor.GFunctor' f => Generics.Deriving.Functor.GFunctor' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Functor.GFunctor' f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Generics.:+: g)
instance (Generics.Deriving.Functor.GFunctor' f, Generics.Deriving.Functor.GFunctor' g) => Generics.Deriving.Functor.GFunctor' (f GHC.Generics.:*: g)
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UAddr
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UChar
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UDouble
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UFloat
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UInt
instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UWord

module Generics.Deriving.Foldable
class GFoldable t
gfoldMap :: (GFoldable t, Monoid m) => (a -> m) -> t a -> m
gfoldMap :: (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
gfoldMap' :: (GFoldable' t, Monoid m) => (a -> m) -> t a -> m
instance Generics.Deriving.Foldable.GFoldable f => Generics.Deriving.Foldable.GFoldable' (GHC.Generics.Rec1 f)
instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Generics.:.: g)
instance Generics.Deriving.Foldable.GFoldable ((,) a)
instance Generics.Deriving.Foldable.GFoldable []
instance Generics.Deriving.Foldable.GFoldable (Data.Semigroup.Arg a)
instance Generics.Deriving.Foldable.GFoldable Data.Complex.Complex
instance Generics.Deriving.Foldable.GFoldable (Data.Functor.Const.Const m)
instance Generics.Deriving.Foldable.GFoldable Data.Ord.Down
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Internal.Dual
instance Generics.Deriving.Foldable.GFoldable (Data.Either.Either a)
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.First
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.First
instance Generics.Deriving.Foldable.GFoldable Data.Functor.Identity.Identity
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Last
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Last
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Max
instance Generics.Deriving.Foldable.GFoldable GHC.Maybe.Maybe
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Min
instance Generics.Deriving.Foldable.GFoldable GHC.Base.NonEmpty
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Internal.Product
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 Data.Proxy.Proxy
instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Internal.Sum
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 Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Foldable.GFoldable Control.Applicative.ZipList
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.V1
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.U1
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.Par1
instance Generics.Deriving.Foldable.GFoldable' (GHC.Generics.K1 i c)
instance Generics.Deriving.Foldable.GFoldable' f => Generics.Deriving.Foldable.GFoldable' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Foldable.GFoldable' f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Generics.:+: g)
instance (Generics.Deriving.Foldable.GFoldable' f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Generics.:*: g)
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UAddr
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UChar
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UDouble
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UFloat
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UInt
instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UWord

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

module Generics.Deriving.Enum
class GEnum a
genum :: GEnum a => [a]
genum :: (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
enum' :: 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]

-- | The position of a subscript in the subrange.
index :: GIx a => (a, a) -> a -> Int

-- | Returns True the given subscript lies in the range defined the
--   bounding pair.
inRange :: GIx a => (a, a) -> a -> Bool

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

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

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

module Generics.Deriving.Copoint
class GCopoint d
gcopoint :: GCopoint d => d a -> a
gcopoint :: (GCopoint d, Generic1 d, GCopoint' (Rep1 d)) => d a -> a
gcopointdefault :: (Generic1 d, GCopoint' (Rep1 d)) => d a -> a
class GCopoint' t
gcopoint' :: GCopoint' t => t a -> Maybe a
instance Generics.Deriving.Copoint.GCopoint f => Generics.Deriving.Copoint.GCopoint' (GHC.Generics.Rec1 f)
instance (Generics.Deriving.Copoint.GCopoint f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Generics.:.: 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 f => Generics.Deriving.Copoint.GCopoint (Data.Semigroup.Internal.Alt f)
instance Generics.Deriving.Copoint.GCopoint (Data.Semigroup.Arg a)
instance Generics.Deriving.Copoint.GCopoint Data.Ord.Down
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Internal.Dual
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.First
instance Generics.Deriving.Copoint.GCopoint 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 f, Generics.Deriving.Copoint.GCopoint g) => Generics.Deriving.Copoint.GCopoint (Data.Functor.Sum.Sum f g)
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Internal.Sum
instance Generics.Deriving.Copoint.GCopoint m => Generics.Deriving.Copoint.GCopoint (Control.Applicative.WrappedMonad m)
instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.WrappedMonoid
instance Generics.Deriving.Copoint.GCopoint' GHC.Generics.V1
instance Generics.Deriving.Copoint.GCopoint' GHC.Generics.U1
instance Generics.Deriving.Copoint.GCopoint' GHC.Generics.Par1
instance Generics.Deriving.Copoint.GCopoint' (GHC.Generics.K1 i c)
instance Generics.Deriving.Copoint.GCopoint' f => Generics.Deriving.Copoint.GCopoint' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Copoint.GCopoint' f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Generics.:+: g)
instance (Generics.Deriving.Copoint.GCopoint' f, Generics.Deriving.Copoint.GCopoint' g) => Generics.Deriving.Copoint.GCopoint' (f GHC.Generics.:*: g)

module Generics.Deriving.ConNames
class ConNames f
gconNames :: ConNames f => f a -> [String]
gconNameOf :: 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.Generics.:+: g)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). Generics.Deriving.ConNames.ConNames f => Generics.Deriving.ConNames.ConNames (GHC.Generics.D1 c f)
instance forall k (c :: GHC.Generics.Meta) (f :: k -> *). GHC.Generics.Constructor c => Generics.Deriving.ConNames.ConNames (GHC.Generics.C1 c f)

module Generics.Deriving.Semigroup
class GSemigroup a
gsappend :: GSemigroup a => a -> a -> a
gsappend :: (GSemigroup a, Generic a, GSemigroup' (Rep a)) => a -> a -> a
gstimes :: (GSemigroup a, Integral b) => b -> a -> a

-- | Only available with base-4.9 or later
gsconcat :: GSemigroup a => NonEmpty a -> a
infixr 6 `gsappend`
gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a
infixr 6 `gsappenddefault`
class GSemigroup' f
gsappend' :: 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
class GSemigroup a => GMonoid a

-- | Generic mempty
gmempty :: GMonoid a => a

-- | Generic mappend
gmappend :: GMonoid a => a -> a -> a

-- | Generic mconcat
gmconcat :: GMonoid a => [a] -> a

-- | Generic mempty
gmempty :: (GMonoid a, Generic a, GMonoid' (Rep a)) => a

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

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

-- | mostly implemented by Sean Leather.
module Generics.Deriving.Uniplate
class Uniplate a
children :: Uniplate a => a -> [a]
children :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => a -> [a]
context :: Uniplate a => a -> [a] -> a
context :: (Uniplate a, Generic a, Context' (Rep a) a) => a -> [a] -> a
descend :: Uniplate a => (a -> a) -> a -> a
descend :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
descendM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
descendM :: (Uniplate a, Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a
transform :: Uniplate a => (a -> a) -> a -> a
transform :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a
transformM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
transformM :: (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 b
children' :: Uniplate' f b => f a -> [b]
descend' :: Uniplate' f b => (b -> b) -> f a -> f a
descendM' :: (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f a)
transform' :: Uniplate' f b => (b -> b) -> f a -> f a
transformM' :: (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f a)
class Context' f b
context' :: Context' f b => f a -> [b] -> f a
instance Generics.Deriving.Uniplate.Uniplate a => Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.K1 i a) 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.Types.Float
instance Generics.Deriving.Uniplate.Uniplate GHC.Types.Int
instance Generics.Deriving.Uniplate.Uniplate ()
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.Maybe.Maybe a)
instance Generics.Deriving.Uniplate.Uniplate (Data.Either.Either a b)
instance Generics.Deriving.Uniplate.Uniplate [a]
instance Generics.Deriving.Uniplate.Context' GHC.Generics.U1 b
instance Generics.Deriving.Uniplate.Context' (GHC.Generics.K1 i a) a
instance Generics.Deriving.Uniplate.Context' (GHC.Generics.K1 i a) b
instance forall k (f :: k -> *) b i (c :: GHC.Generics.Meta). Generics.Deriving.Uniplate.Context' f b => Generics.Deriving.Uniplate.Context' (GHC.Generics.M1 i c f) b
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.Generics.:+: g) b
instance forall k (g :: k -> *) a i (c :: GHC.Generics.Meta) j. Generics.Deriving.Uniplate.Context' g a => Generics.Deriving.Uniplate.Context' (GHC.Generics.M1 i c (GHC.Generics.K1 j a) GHC.Generics.:*: g) a
instance forall k (g :: k -> *) b (f :: k -> *). Generics.Deriving.Uniplate.Context' g b => Generics.Deriving.Uniplate.Context' (f GHC.Generics.:*: g) b
instance Generics.Deriving.Uniplate.Uniplate' GHC.Generics.U1 a
instance Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.K1 i a) b
instance forall k (f :: k -> *) b i (c :: GHC.Generics.Meta). Generics.Deriving.Uniplate.Uniplate' f b => Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.M1 i c f) 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.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.Generics.:*: g) b

-- | GHC 8.6 introduced the DerivingVia 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 Generic
--   instance.
--   
--   For a number of classes, there are sensible default instantiations. In
--   older GHCs, these can be supplied in the class definition, using the
--   DefaultSignatures extension. However, only one default
--   can be provided! With DerivingVia 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
--   (Default, Default1) for which such instances are
--   defined.
--   
--   One might then use DerivingVia 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 Default 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 Type.
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 Type ->
--   Type.
newtype Default1 f a
Default1 :: f a -> Default1 f a
[unDefault1] :: Default1 f a -> f a
instance (GHC.Generics.Generic1 f, Generics.Deriving.Functor.GFunctor' (GHC.Generics.Rep1 f)) => Generics.Deriving.Functor.GFunctor (Generics.Deriving.Default.Default1 f)
instance (GHC.Generics.Generic1 f, Generics.Deriving.Copoint.GCopoint' (GHC.Generics.Rep1 f)) => Generics.Deriving.Copoint.GCopoint (Generics.Deriving.Default.Default1 f)
instance (GHC.Generics.Generic1 t, Generics.Deriving.Foldable.GFoldable' (GHC.Generics.Rep1 t)) => Generics.Deriving.Foldable.GFoldable (Generics.Deriving.Default.Default1 t)
instance (GHC.Generics.Generic1 t, Generics.Deriving.Functor.GFunctor' (GHC.Generics.Rep1 t), Generics.Deriving.Foldable.GFoldable' (GHC.Generics.Rep1 t), Generics.Deriving.Traversable.GTraversable' (GHC.Generics.Rep1 t)) => Generics.Deriving.Traversable.GTraversable (Generics.Deriving.Default.Default1 t)
instance (GHC.Generics.Generic a, Generics.Deriving.Eq.GEq' (GHC.Generics.Rep a)) => Generics.Deriving.Eq.GEq (Generics.Deriving.Default.Default a)
instance (GHC.Generics.Generic a, Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.Enum' (GHC.Generics.Rep a)) => Generics.Deriving.Enum.GEnum (Generics.Deriving.Default.Default a)
instance (GHC.Generics.Generic a, Generics.Deriving.Show.GShow' (GHC.Generics.Rep a)) => Generics.Deriving.Show.GShow (Generics.Deriving.Default.Default a)
instance (GHC.Generics.Generic a, Generics.Deriving.Semigroup.Internal.GSemigroup' (GHC.Generics.Rep a)) => Generics.Deriving.Semigroup.Internal.GSemigroup (Generics.Deriving.Default.Default a)
instance (GHC.Generics.Generic a, Generics.Deriving.Monoid.Internal.GMonoid' (GHC.Generics.Rep a)) => Generics.Deriving.Monoid.Internal.GMonoid (Generics.Deriving.Default.Default a)
instance (GHC.Generics.Generic a, Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.Rep a) a, Generics.Deriving.Uniplate.Context' (GHC.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:
--   
--   
--   {-# LANGUAGE TemplateHaskell #-}
--   
--   data Example a = Example Int Char a
--   $(deriveAll0     ''Example) -- Derives Generic instance
--   $(deriveAll1     ''Example) -- Derives Generic1 instance
--   $(deriveAll0And1 ''Example) -- Derives Generic and Generic1 instances
--   
--   
--   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:
--   
--   
--   {-# LANGUAGE FlexibleInstances, TemplateHaskell, TypeFamilies #-}
--   
--   data family Family a b
--   newtype instance Family Char x = FamilyChar Char
--   data    instance Family Bool x = FamilyTrue | FamilyFalse
--   
--   $(deriveAll0 'FamilyChar) -- instance Generic (Family Char b) where ...
--   $(deriveAll1 'FamilyTrue) -- instance Generic1 (Family Bool) where ...
--   -- Alternatively, one could type $(deriveAll1 'FamilyFalse)
--   
module Generics.Deriving.TH

-- | Given the type and the name (as string) for the type to derive,
--   generate the Data instance, the Constructor
--   instances, and the Selector 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
--   Datatype.
--   
--   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
--   Constructor.
--   
--   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
--   Selector.
--   
--   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 deriveAll0.
deriveAll :: Name -> Q [Dec]

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

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

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

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

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

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

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

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

-- | Generates the Rep type synonym constructor (as opposed to
--   deriveRep0, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   
--   type Rep (Foo a b) = $(makeRep0 ''Foo) a b
--   
--   
--   The use of makeRep0 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, makeRep0Inline is
--   recommended instead. However, makeRep0Inline is not usable on
--   GHC 7.0, 7.2, or 7.4 due to a GHC bug, so makeRep0 still exists
--   for GHC 7.0, 7.2, and 7.4 users.
makeRep0 :: Name -> Q Type

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

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

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

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

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

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

-- | Generates the Rep1 type synonym constructor (as opposed to
--   deriveRep1, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   
--   type Rep1 (Foo a) = $(makeRep1 ''Foo) a
--   
--   
--   The use of makeRep1 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, makeRep1Inline is
--   recommended instead. However, makeRep1Inline is not usable on
--   GHC 7.0, 7.2, or 7.4 due to a GHC bug, so makeRep1 still exists
--   for GHC 7.0, 7.2, and 7.4 users.
makeRep1 :: Name -> Q Type

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

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

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

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

-- | Sensible default Options.
defaultOptions :: Options

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

-- | InlineRep, a sensible default RepOptions.
defaultRepOptions :: RepOptions

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

-- | True, a sensible default KindSigOptions.
defaultKindSigOptions :: KindSigOptions

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

-- | Sensible default EmptyCaseOptions.
defaultEmptyCaseOptions :: EmptyCaseOptions

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

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

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

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

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

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

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

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

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

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

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