-- 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 GHC
--   before version 7.2.
@package generic-deriving
@version 1.9.0

module Generics.Deriving.Base

-- | Constants of kind #

-- | Type synonym for URec: Addr#
type UAddr = URec (Ptr ())

-- | Type synonym for URec: Char#
type UChar = URec Char

-- | Type synonym for URec: Double#
type UDouble = URec Double

-- | Type synonym for URec: Float#
type UFloat = URec Float

-- | Type synonym for URec: Int#
type UInt = URec Int

-- | Type synonym for URec: Word#
type UWord = URec Word
instance GHC.Classes.Ord (Generics.Deriving.Base.URec (GHC.Ptr.Ptr ()) p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec (GHC.Ptr.Ptr ()) p)
instance GHC.Show.Show (Generics.Deriving.Base.URec GHC.Types.Char p)
instance GHC.Classes.Ord (Generics.Deriving.Base.URec GHC.Types.Char p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec GHC.Types.Char p)
instance GHC.Show.Show (Generics.Deriving.Base.URec GHC.Types.Double p)
instance GHC.Classes.Ord (Generics.Deriving.Base.URec GHC.Types.Double p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec GHC.Types.Double p)
instance GHC.Show.Show (Generics.Deriving.Base.URec GHC.Types.Float p)
instance GHC.Classes.Ord (Generics.Deriving.Base.URec GHC.Types.Float p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec GHC.Types.Float p)
instance GHC.Show.Show (Generics.Deriving.Base.URec GHC.Types.Int p)
instance GHC.Classes.Ord (Generics.Deriving.Base.URec GHC.Types.Int p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec GHC.Types.Int p)
instance GHC.Show.Show (Generics.Deriving.Base.URec GHC.Types.Word p)
instance GHC.Classes.Ord (Generics.Deriving.Base.URec GHC.Types.Word p)
instance GHC.Classes.Eq (Generics.Deriving.Base.URec GHC.Types.Word p)

-- | Summary: Return the name of all the constructors of a type.
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 (Generics.Deriving.ConNames.ConNames f, Generics.Deriving.ConNames.ConNames g) => Generics.Deriving.ConNames.ConNames (f GHC.Generics.:+: g)
instance Generics.Deriving.ConNames.ConNames f => Generics.Deriving.ConNames.ConNames (GHC.Generics.D1 c f)
instance GHC.Generics.Constructor c => Generics.Deriving.ConNames.ConNames (GHC.Generics.C1 c f)

module Generics.Deriving.Instances
type Rep0UAddr p = D1 D1UAddr (C1 C1_0UAddr (S1 S1_0_0UAddr UAddr))
type Rep0UChar p = D1 D1UChar (C1 C1_0UChar (S1 S1_0_0UChar UChar))
type Rep0UDouble p = D1 D1UDouble (C1 C1_0UDouble (S1 S1_0_0UDouble UDouble))
type Rep0UFloat p = D1 D1UFloat (C1 C1_0UFloat (S1 S1_0_0UFloat UFloat))
type Rep0UInt p = D1 D1UInt (C1 C1_0UInt (S1 S1_0_0UInt UInt))
type Rep0UWord p = D1 D1UWord (C1 C1_0UWord (S1 S1_0_0UWord UWord))
instance GHC.Generics.Generic (Generics.Deriving.Base.UAddr p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UAddr
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UAddr
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UAddr
instance GHC.Generics.Generic (Generics.Deriving.Base.UChar p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UChar
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UChar
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UChar
instance GHC.Generics.Generic (Generics.Deriving.Base.UDouble p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UDouble
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UDouble
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UDouble
instance GHC.Generics.Generic (Generics.Deriving.Base.UFloat p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UFloat
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UFloat
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UFloat
instance GHC.Generics.Generic (Generics.Deriving.Base.UInt p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UInt
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UInt
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UInt
instance GHC.Generics.Generic (Generics.Deriving.Base.UWord p)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1UWord
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0UWord
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0UWord

module Generics.Deriving.Copoint
class GCopoint d where gcopoint = gcopointdefault
gcopoint :: GCopoint d => d a -> a
gcopointdefault :: (Generic1 d, GCopoint' (Rep1 d)) => d a -> a
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)
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 Data.Monoid.Dual
instance Generics.Deriving.Copoint.GCopoint Data.Functor.Identity.Identity
instance Generics.Deriving.Copoint.GCopoint Data.Monoid.Sum
instance Generics.Deriving.Copoint.GCopoint m => Generics.Deriving.Copoint.GCopoint (Control.Applicative.WrappedMonad m)

module Generics.Deriving.Eq
class GEq a where geq = geqdefault
geq :: GEq a => a -> a -> Bool
geqdefault :: (Generic a, GEq' (Rep a)) => a -> a -> Bool
instance Generics.Deriving.Eq.GEq' GHC.Generics.U1
instance Generics.Deriving.Eq.GEq c => Generics.Deriving.Eq.GEq' (GHC.Generics.K1 i c)
instance Generics.Deriving.Eq.GEq' a => Generics.Deriving.Eq.GEq' (GHC.Generics.M1 i c a)
instance (Generics.Deriving.Eq.GEq' a, Generics.Deriving.Eq.GEq' b) => Generics.Deriving.Eq.GEq' (a GHC.Generics.:+: b)
instance (Generics.Deriving.Eq.GEq' a, Generics.Deriving.Eq.GEq' b) => Generics.Deriving.Eq.GEq' (a GHC.Generics.:*: b)
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UAddr
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UChar
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UDouble
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UFloat
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UInt
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.UWord
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 (Generics.Deriving.Eq.GEq (f p), Generics.Deriving.Eq.GEq (g p)) => Generics.Deriving.Eq.GEq ((GHC.Generics.:+:) f g p)
instance (Generics.Deriving.Eq.GEq (f p), Generics.Deriving.Eq.GEq (g p)) => Generics.Deriving.Eq.GEq ((GHC.Generics.:*:) f g p)
instance Generics.Deriving.Eq.GEq (f (g p)) => Generics.Deriving.Eq.GEq ((GHC.Generics.:.:) f g p)
instance Generics.Deriving.Eq.GEq Data.Monoid.All
instance Generics.Deriving.Eq.GEq (f a) => Generics.Deriving.Eq.GEq (Data.Monoid.Alt f a)
instance Generics.Deriving.Eq.GEq Data.Monoid.Any
instance Generics.Deriving.Eq.GEq GHC.Generics.Arity
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 (Control.Applicative.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.Types.Double
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Monoid.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 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 Data.Char.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.Integer.Type.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 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 (f p) => Generics.Deriving.Eq.GEq (GHC.Generics.M1 i c f p)
instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (GHC.Base.Maybe a)
instance Generics.Deriving.Eq.GEq GHC.Natural.Natural
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.Monoid.Product a)
instance Generics.Deriving.Eq.GEq (Data.Proxy.Proxy s)
instance Generics.Deriving.Eq.GEq (GHC.Ptr.Ptr a)
instance 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 a => Generics.Deriving.Eq.GEq (Data.Monoid.Sum a)
instance Generics.Deriving.Eq.GEq (GHC.Generics.U1 p)
instance Generics.Deriving.Eq.GEq Data.Void.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 a => Generics.Deriving.Eq.GEq (Control.Applicative.ZipList a)

module Generics.Deriving.Enum
class GEnum a where genum = genumDefault
genum :: GEnum 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 (Ord a) => GIx a where range = rangeDefault index = indexDefault inRange = inRangeDefault

-- | 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
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.Enum' GHC.Generics.U1
instance Generics.Deriving.Enum.GEnum c => Generics.Deriving.Enum.Enum' (GHC.Generics.K1 i c)
instance Generics.Deriving.Enum.Enum' f => Generics.Deriving.Enum.Enum' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Enum.Enum' f, Generics.Deriving.Enum.Enum' g) => Generics.Deriving.Enum.Enum' (f GHC.Generics.:+: g)
instance (Generics.Deriving.Enum.Enum' f, Generics.Deriving.Enum.Enum' g) => Generics.Deriving.Enum.Enum' (f GHC.Generics.:*: g)
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 (Generics.Deriving.Enum.GEnum (f p), Generics.Deriving.Enum.GEnum (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Generics.:+:) f g p)
instance (Generics.Deriving.Enum.GEnum (f p), Generics.Deriving.Enum.GEnum (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Generics.:*:) f g p)
instance Generics.Deriving.Enum.GEnum (f (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Generics.:.:) f g p)
instance Generics.Deriving.Enum.GEnum Data.Monoid.All
instance Generics.Deriving.Enum.GEnum (f a) => Generics.Deriving.Enum.GEnum (Data.Monoid.Alt f a)
instance Generics.Deriving.Enum.GEnum Data.Monoid.Any
instance Generics.Deriving.Enum.GEnum GHC.Generics.Arity
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 (Control.Applicative.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.Monoid.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 System.Posix.Types.Fd
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Monoid.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.Integer.Type.Integer
instance Generics.Deriving.Enum.GEnum Foreign.Ptr.IntPtr
instance 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 (f p) => Generics.Deriving.Enum.GEnum (GHC.Generics.M1 i c f p)
instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Base.Maybe 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.Monoid.Product a)
instance Generics.Deriving.Enum.GEnum (Data.Proxy.Proxy s)
instance 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.Monoid.Sum a)
instance 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 a => Generics.Deriving.Enum.GEnum (Control.Applicative.ZipList a)
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.Monoid.All
instance (Generics.Deriving.Eq.GEq (f a), Generics.Deriving.Enum.GEnum (f a), Generics.Deriving.Enum.GIx (f a)) => Generics.Deriving.Enum.GIx (Data.Monoid.Alt f a)
instance Generics.Deriving.Enum.GIx Data.Monoid.Any
instance Generics.Deriving.Enum.GIx GHC.Generics.Arity
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.Monoid.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 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.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.Integer.Type.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 (GHC.Base.Maybe a)
instance Generics.Deriving.Enum.GIx GHC.Natural.Natural
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.Monoid.Product a)
instance 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.Monoid.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

module Generics.Deriving.Functor
class GFunctor f where gmap = gmapdefault
gmap :: GFunctor f => (a -> b) -> f a -> f b
gmapdefault :: (Generic1 f, GFunctor' (Rep1 f)) => (a -> b) -> f a -> f b
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.Rec1 f)
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 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.Monoid.Alt f)
instance Generics.Deriving.Functor.GFunctor (Control.Applicative.Const m)
instance Generics.Deriving.Functor.GFunctor (Data.Either.Either a)
instance Generics.Deriving.Functor.GFunctor Data.Monoid.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 GHC.Base.Maybe
instance Generics.Deriving.Functor.GFunctor Control.Applicative.ZipList

module Generics.Deriving.Show
class GShow a where gshows = gshowsPrec 0 gshow x = gshows x "" gshowsPrec = gshowsPrecdefault
gshowsPrec :: GShow a => Int -> a -> ShowS
gshows :: GShow a => a -> ShowS
gshow :: GShow a => a -> String
gshowsPrecdefault :: (Generic a, GShow' (Rep a)) => Int -> a -> ShowS
instance Generics.Deriving.Show.GShow' GHC.Generics.U1
instance Generics.Deriving.Show.GShow c => Generics.Deriving.Show.GShow' (GHC.Generics.K1 i c)
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' Generics.Deriving.Base.UChar
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.UDouble
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.UFloat
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.UInt
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.UWord
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.Monoid.All
instance Generics.Deriving.Show.GShow (f a) => Generics.Deriving.Show.GShow (Data.Monoid.Alt f a)
instance Generics.Deriving.Show.GShow Data.Monoid.Any
instance Generics.Deriving.Show.GShow GHC.Generics.Arity
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 (Control.Applicative.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.Monoid.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 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 Data.Char.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.Integer.Type.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 (f p) => Generics.Deriving.Show.GShow (GHC.Generics.M1 i c f p)
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Base.Maybe a)
instance Generics.Deriving.Show.GShow GHC.Natural.Natural
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.Monoid.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 GHC.Base.String
instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Monoid.Sum a)
instance Generics.Deriving.Show.GShow (GHC.Generics.U1 p)
instance Generics.Deriving.Show.GShow Data.Void.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 a => Generics.Deriving.Show.GShow (Control.Applicative.ZipList a)

-- | Summary: Functions inspired by the Uniplate generic programming
--   library, mostly implemented by Sean Leather.
module Generics.Deriving.Uniplate
class Uniplate a where children = childrendefault context = contextdefault descend = descenddefault descendM = descendMdefault transform = transformdefault transformM = transformMdefault
children :: Uniplate a => a -> [a]
context :: Uniplate a => a -> [a] -> a
descend :: Uniplate a => (a -> a) -> a -> a
descendM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
transform :: Uniplate a => (a -> a) -> a -> a
transformM :: (Uniplate 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
instance Generics.Deriving.Uniplate.Uniplate' GHC.Generics.U1 a
instance Generics.Deriving.Uniplate.Uniplate a => Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.K1 i a) a
instance Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.K1 i a) b
instance Generics.Deriving.Uniplate.Uniplate' f b => Generics.Deriving.Uniplate.Uniplate' (GHC.Generics.M1 i c f) b
instance (Generics.Deriving.Uniplate.Uniplate' f b, Generics.Deriving.Uniplate.Uniplate' g b) => Generics.Deriving.Uniplate.Uniplate' (f GHC.Generics.:+: g) b
instance (Generics.Deriving.Uniplate.Uniplate' f b, Generics.Deriving.Uniplate.Uniplate' g b) => Generics.Deriving.Uniplate.Uniplate' (f GHC.Generics.:*: g) b
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 Generics.Deriving.Uniplate.Context' f b => Generics.Deriving.Uniplate.Context' (GHC.Generics.M1 i c f) b
instance (Generics.Deriving.Uniplate.Context' f b, Generics.Deriving.Uniplate.Context' g b) => Generics.Deriving.Uniplate.Context' (f GHC.Generics.:+: g) b
instance 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 Generics.Deriving.Uniplate.Context' g b => Generics.Deriving.Uniplate.Context' (f GHC.Generics.:*: g) b
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.Base.Maybe a)
instance Generics.Deriving.Uniplate.Uniplate (Data.Either.Either a b)
instance Generics.Deriving.Uniplate.Uniplate [a]

module Generics.Deriving.Foldable
class GFoldable t where gfoldMap = gfoldMapdefault gfold = gfoldMap id gfoldr f z t = appEndo (gfoldMap (Endo . f) t) z gfoldr' f z0 xs = gfoldl f' id xs z0 where f' k x z = k $! f x z gfoldl f z t = appEndo (getDual (gfoldMap (Dual . Endo . flip f) t)) z gfoldl' f z0 xs = gfoldr f' id xs z0 where f' x k z = k $! f z x gfoldr1 f xs = fromMaybe (error "gfoldr1: empty structure") (gfoldr mf Nothing xs) where mf x Nothing = Just x mf x (Just y) = Just (f x y) gfoldl1 f xs = fromMaybe (error "foldl1: empty structure") (gfoldl mf Nothing xs) where mf Nothing y = Just y mf (Just x) y = Just (f x y)
gfoldMap :: (GFoldable 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
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.Rec1 f)
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 f, Generics.Deriving.Foldable.GFoldable' g) => Generics.Deriving.Foldable.GFoldable' (f GHC.Generics.:.: g)
instance Generics.Deriving.Foldable.GFoldable []
instance Generics.Deriving.Foldable.GFoldable ((,) a)
instance Generics.Deriving.Foldable.GFoldable (Control.Applicative.Const m)
instance Generics.Deriving.Foldable.GFoldable (Data.Either.Either a)
instance Generics.Deriving.Foldable.GFoldable Data.Functor.Identity.Identity
instance Generics.Deriving.Foldable.GFoldable GHC.Base.Maybe

-- | This module provides two main features:
--   
--   
--   
- GMonoid, a generic version of the Monoid type class,
--   including instances of the types from Data.Monoid
--   
- Default generic definitions for the Monoid methods
--   mempty and mappend
--   
--   
--   The generic defaults only work for types without alternatives (i.e.
--   they have only one constructor). We cannot in general know how to deal
--   with different constructors.
module Generics.Deriving.Monoid
class GMonoid a where gmconcat = foldr gmappend gmempty gmempty = to gmempty' gmappend x y = to (gmappend' (from x) (from y))

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

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

-- | Generic mconcat
gmconcat :: GMonoid a => [a] -> a
gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a
gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a
memptydefault :: (Generic a, Monoid' (Rep a)) => a
mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a
instance Generics.Deriving.Monoid.GMonoid' GHC.Generics.U1
instance Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid' (GHC.Generics.K1 i a)
instance Generics.Deriving.Monoid.GMonoid' f => Generics.Deriving.Monoid.GMonoid' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Monoid.GMonoid' f, Generics.Deriving.Monoid.GMonoid' h) => Generics.Deriving.Monoid.GMonoid' (f GHC.Generics.:*: h)
instance Generics.Deriving.Monoid.Monoid' GHC.Generics.U1
instance GHC.Base.Monoid a => Generics.Deriving.Monoid.Monoid' (GHC.Generics.K1 i a)
instance Generics.Deriving.Monoid.Monoid' f => Generics.Deriving.Monoid.Monoid' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Monoid.Monoid' f, Generics.Deriving.Monoid.Monoid' h) => Generics.Deriving.Monoid.Monoid' (f GHC.Generics.:*: h)
instance Generics.Deriving.Monoid.GMonoid GHC.Types.Ordering
instance Generics.Deriving.Monoid.GMonoid ()
instance Generics.Deriving.Monoid.GMonoid Data.Monoid.Any
instance Generics.Deriving.Monoid.GMonoid Data.Monoid.All
instance Generics.Deriving.Monoid.GMonoid (Data.Monoid.First a)
instance Generics.Deriving.Monoid.GMonoid (Data.Monoid.Last a)
instance GHC.Num.Num a => Generics.Deriving.Monoid.GMonoid (Data.Monoid.Sum a)
instance GHC.Num.Num a => Generics.Deriving.Monoid.GMonoid (Data.Monoid.Product a)
instance Generics.Deriving.Monoid.GMonoid [a]
instance Generics.Deriving.Monoid.GMonoid (Data.Monoid.Endo a)
instance Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid (Data.Monoid.Dual a)
instance Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid (GHC.Base.Maybe a)
instance Generics.Deriving.Monoid.GMonoid b => Generics.Deriving.Monoid.GMonoid (a -> b)
instance Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid (Control.Applicative.Const a b)
instance Generics.Deriving.Monoid.GMonoid (Data.Proxy.Proxy s)
instance Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid (Data.Functor.Identity.Identity a)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b) => Generics.Deriving.Monoid.GMonoid (a, b)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c) => Generics.Deriving.Monoid.GMonoid (a, b, c)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c, Generics.Deriving.Monoid.GMonoid d) => Generics.Deriving.Monoid.GMonoid (a, b, c, d)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c, Generics.Deriving.Monoid.GMonoid d, Generics.Deriving.Monoid.GMonoid e) => Generics.Deriving.Monoid.GMonoid (a, b, c, d, e)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c, Generics.Deriving.Monoid.GMonoid d, Generics.Deriving.Monoid.GMonoid e, Generics.Deriving.Monoid.GMonoid f) => Generics.Deriving.Monoid.GMonoid (a, b, c, d, e, f)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c, Generics.Deriving.Monoid.GMonoid d, Generics.Deriving.Monoid.GMonoid e, Generics.Deriving.Monoid.GMonoid f, Generics.Deriving.Monoid.GMonoid g) => Generics.Deriving.Monoid.GMonoid (a, b, c, d, e, f, g)
instance (Generics.Deriving.Monoid.GMonoid a, Generics.Deriving.Monoid.GMonoid b, Generics.Deriving.Monoid.GMonoid c, Generics.Deriving.Monoid.GMonoid d, Generics.Deriving.Monoid.GMonoid e, Generics.Deriving.Monoid.GMonoid f, Generics.Deriving.Monoid.GMonoid g, Generics.Deriving.Monoid.GMonoid h) => Generics.Deriving.Monoid.GMonoid (a, b, c, d, e, f, g, h)

module Generics.Deriving.Traversable
class (GFunctor t, GFoldable t) => GTraversable t where gtraverse = gtraversedefault gsequenceA = gtraverse id gmapM f = unwrapMonad . gtraverse (WrapMonad . f) gsequence = gmapM id
gtraverse :: (GTraversable 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)
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.Rec1 f)
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 f, Generics.Deriving.Traversable.GTraversable' g) => Generics.Deriving.Traversable.GTraversable' (f GHC.Generics.:.: g)
instance Generics.Deriving.Traversable.GTraversable []
instance Generics.Deriving.Traversable.GTraversable ((,) a)
instance Generics.Deriving.Traversable.GTraversable (Control.Applicative.Const m)
instance Generics.Deriving.Traversable.GTraversable (Data.Either.Either a)
instance Generics.Deriving.Traversable.GTraversable Data.Functor.Identity.Identity
instance Generics.Deriving.Traversable.GTraversable GHC.Base.Maybe

-- | 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 b = FamilyChar Char
--   data    instance Family Bool b = FamilyTrue | FamilyFalse
--   
--   $(deriveAll0 'FamilyChar) -- instance Generic (Family Char b) where ...
--   $(deriveAll1 'FamilyTrue) -- instance Generic1 (Family Bool) where ...
--   -- Alternatively, one could type $(deriveAll1 'FamilyFalse)
--   
--   
--   If you are deriving for data family instances, be aware of a bug on
--   GHC 7.8 (Trac #9692) which can cause incorrectly derived
--   Generic1 instances if a data family declaration and one of its
--   instances use different type variables:
--   
--   
--   data family Foo a b c
--   data instance Foo Int y z = Foo Int y z
--   $(deriveAll1 'Foo)
--   
--   
--   To avoid this issue, it is recommened that you use the same type
--   variables in the same positions in which they appeared in the data
--   family declaration:
--   
--   
--   data family Foo a b c
--   data instance Foo Int b c = Foo Int b c
--   $(deriveAll1 'Foo)
--   
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.
deriveMeta :: Name -> Q [Dec]

-- | Given a datatype name, derive a datatype and instance of class
--   Datatype.
deriveData :: Name -> Q [Dec]

-- | Given a datatype name, derive datatypes and instances of class
--   Constructor.
deriveConstructors :: Name -> Q [Dec]

-- | Given a datatype name, derive datatypes and instances of class
--   Selector.
deriveSelectors :: 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.
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 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]

-- | Given the names of a generic class, a type to instantiate, a function
--   in the class and the default implementation, generates the code for a
--   basic generic instance.
simplInstance :: Name -> Name -> Name -> Name -> Q [Dec]

-- | Generates the Rep0 type synonym constructor (as opposed to
--   deriveRep0, which generates the type synonym declaration).
makeRep0 :: Name -> Q Type

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

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

-- | Generates the Rep1 type synonym constructor (as opposed to
--   deriveRep1, which generates the type synonym declaration).
makeRep1 :: Name -> 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

module Generics.Deriving
