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


-- | Generic programming library for generalised deriving.
--   
--   This package provides functionality for generalising the deriving
--   mechanism in Haskell to arbitrary classes. It was first described in
--   the paper:
--   
--   <ul>
--   <li><i>A generic deriving mechanism for Haskell</i>. Jose Pedro
--   Magalhaes, Atze Dijkstra, Johan Jeuring, and Andres Loeh.
--   Haskell'10.</li>
--   </ul>
--   
--   The current implementation integrates with the new GHC Generics. See
--   <a>http://www.haskell.org/haskellwiki/GHC.Generics</a> for more
--   information. Template Haskell code is provided for supporting GHC
--   before version 7.2.
@package generic-deriving
@version 1.10.4.1


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

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

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

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

-- | Given a datatype name, derive datatypes and instances of class
--   <tt>Selector</tt>.
deriveSelectors :: Name -> Q [Dec]

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

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

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

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

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

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

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

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

-- | 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]

-- | Like <a>deriveAll0</a>, except that the type variable binders in the
--   <tt>Rep</tt> type synonym will have explicit kind signatures.
deriveAll0WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveAll1</a>, except that the type variable binders in the
--   <tt>Rep1</tt> type synonym will have explicit kind signatures.
deriveAll1WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveAll0And1</a>, except that the type variable binders in
--   the <tt>Rep</tt> and <tt>Rep1</tt> type synonyms will have explicit
--   kind signatures.
deriveAll0And1WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveRepresentable0</a>, except that the type variable
--   binders in the <tt>Rep</tt> type synonym will have explicit kind
--   signatures.
deriveRepresentable0WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveRepresentable1</a>, except that the type variable
--   binders in the <tt>Rep1</tt> type synonym will have explicit kind
--   signatures.
deriveRepresentable1WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveRep0</a>, except that the type variable binders in the
--   <tt>Rep</tt> type synonym will have explicit kind signatures.
deriveRep0WithKindSigs :: Name -> Q [Dec]

-- | Like <a>deriveRep1</a>, except that the type variable binders in the
--   <tt>Rep1</tt> type synonym will have explicit kind signatures.
deriveRep1WithKindSigs :: Name -> Q [Dec]

-- | Generates the <tt>Rep</tt> type synonym constructor (as opposed to
--   <a>deriveRep0</a>, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   <pre>
--   type Rep (Foo a b) = $(<a>makeRep0</a> ''Foo) a b
--   </pre>
makeRep0 :: Name -> Q Type

-- | Generates the <tt>Rep</tt> type synonym constructor (as opposed to
--   <a>deriveRep0</a>, which generates the type synonym declaration)
--   applied to its type arguments. Unlike <a>makeRep0</a>, this also takes
--   a quoted <a>Type</a> as an argument, e.g.,
--   
--   <pre>
--   type Rep (Foo a b) = $(<a>makeRep0FromType</a> ''Foo [t| Foo a b |])
--   </pre>
makeRep0FromType :: Name -> Q Type -> Q Type

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

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

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

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

-- | Generates the <tt>Rep1</tt> type synonym constructor (as opposed to
--   <a>deriveRep1</a>, which generates the type synonym declaration).
--   After splicing it into Haskell source, it expects types as arguments.
--   For example:
--   
--   <pre>
--   type Rep1 (Foo a b) = $(<a>makeRep1</a> ''Foo) a b
--   </pre>
makeRep1 :: Name -> Q Type

-- | Generates the <tt>Rep1</tt> type synonym constructor (as opposed to
--   <a>deriveRep1</a>, which generates the type synonym declaration)
--   applied to its type arguments. Unlike <a>makeRep1</a>, this also takes
--   a quoted <a>Type</a> as an argument, e.g.,
--   
--   <pre>
--   type Rep1 (Foo a b) = $(<a>makeRep1FromType</a> ''Foo [t| Foo a b |])
--   </pre>
makeRep1FromType :: Name -> Q Type -> Q Type

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

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

module Generics.Deriving.Instances
type Rep0ExitCode = D1 D1ExitCode (C1 C1_0ExitCode U1 :+: C1 C1_1ExitCode (S1 NoSelector (Rec0 Int)))
type Rep0Version = D1 D1Version (C1 C1_0Version (S1 S1_0_0Version (Rec0 [Int]) :*: S1 S1_0_1Version (Rec0 [String])))
type Rep1ConSum f g = D1 D1ConSum (C1 C1_0ConSum (S1 NoSelector (Rec1 f)) :+: C1 C1_1ConSum (S1 NoSelector (Rec1 g)))
type Rep1ConProduct f g = D1 D1ConProduct (C1 C1_ConProduct (S1 NoSelector (Rec1 f) :*: S1 NoSelector (Rec1 g)))
type Rep1ConCompose f g = D1 D1ConCompose (C1 C1_0ConCompose (S1 S1_0_0ConCompose (f :.: Rec1 g)))
type Rep1K1 i c = D1 D1K1 (C1 C1_0K1 (S1 S1_0_0K1 (Rec0 c)))
type Rep1M1 i c f = D1 D1M1 (C1 C1_0M1 (S1 S1_0_0M1 (Rec1 f)))
type Rep1Par1 = D1 D1Par1 (C1 C1_0Par1 (S1 S1_0_0Par1 Par1))
type Rep1Rec1 f = D1 D1Rec1 (C1 C1_0Rec1 (S1 S1_0_0Rec1 (Rec1 f)))
type Rep1U1 = D1 D1U1 (C1 C1_0U1 U1)
type Rep0V1 p = D1 D1V1 V1
type Rep1V1 = D1 D1V1 V1
type Rep0UAddr p = D1 D1UAddr (C1 C1_0UAddr (S1 S1_0_0UAddr UAddr))
type Rep1UAddr = D1 D1UAddr (C1 C1_0UAddr (S1 S1_0_0UAddr UAddr))
type Rep0UChar p = D1 D1UChar (C1 C1_0UChar (S1 S1_0_0UChar UChar))
type Rep1UChar = D1 D1UChar (C1 C1_0UChar (S1 S1_0_0UChar UChar))
type Rep0UDouble p = D1 D1UDouble (C1 C1_0UDouble (S1 S1_0_0UDouble UDouble))
type Rep1UDouble = D1 D1UDouble (C1 C1_0UDouble (S1 S1_0_0UDouble UDouble))
type Rep0UFloat p = D1 D1UFloat (C1 C1_0UFloat (S1 S1_0_0UFloat UFloat))
type Rep1UFloat = D1 D1UFloat (C1 C1_0UFloat (S1 S1_0_0UFloat UFloat))
type Rep0UInt p = D1 D1UInt (C1 C1_0UInt (S1 S1_0_0UInt UInt))
type Rep1UInt = D1 D1UInt (C1 C1_0UInt (S1 S1_0_0UInt UInt))
type Rep0UWord p = D1 D1UWord (C1 C1_0UWord (S1 S1_0_0UWord UWord))
type Rep1UWord = D1 D1UWord (C1 C1_0UWord (S1 S1_0_0UWord UWord))
type Rep0Complex a = D1 D1Complex (C1 C1_0Complex (S1 NoSelector (Rec0 a) :*: S1 NoSelector (Rec0 a)))
type Rep1Complex = D1 D1Complex (C1 C1_0Complex (S1 NoSelector Par1 :*: S1 NoSelector Par1))
type Rep1Proxy = D1 D1Proxy (C1 C1_0Proxy U1)
instance GHC.Generics.Generic GHC.IO.Exception.ExitCode
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1ExitCode
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0ExitCode
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_1ExitCode
instance GHC.Generics.Generic Data.Version.Version
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1Version
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0Version
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0Version
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_1Version
instance GHC.Generics.Generic1 (f GHC.Generics.:+: g)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1ConSum
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0ConSum
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_1ConSum
instance GHC.Generics.Generic1 (f GHC.Generics.:*: g)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1ConProduct
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_ConProduct
instance GHC.Base.Functor f => GHC.Generics.Generic1 (f GHC.Generics.:.: g)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1ConCompose
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0ConCompose
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0ConCompose
instance GHC.Generics.Generic1 (GHC.Generics.K1 i c)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1K1
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0K1
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0K1
instance GHC.Generics.Generic1 (GHC.Generics.M1 i c f)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1M1
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0M1
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0M1
instance GHC.Generics.Generic1 GHC.Generics.Par1
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1Par1
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0Par1
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0Par1
instance GHC.Generics.Generic1 (GHC.Generics.Rec1 f)
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1Rec1
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0Rec1
instance GHC.Generics.Selector Generics.Deriving.Instances.S1_0_0Rec1
instance GHC.Generics.Generic1 GHC.Generics.U1
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1U1
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0U1
instance GHC.Generics.Generic (GHC.Generics.V1 p)
instance GHC.Generics.Generic1 GHC.Generics.V1
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1V1
instance GHC.Generics.Generic (Generics.Deriving.Base.Internal.UAddr p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UAddr
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.Internal.UChar p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UChar
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.Internal.UDouble p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UDouble
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.Internal.UFloat p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UFloat
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.Internal.UInt p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UInt
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.Internal.UWord p)
instance GHC.Generics.Generic1 Generics.Deriving.Base.Internal.UWord
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
instance GHC.Generics.Generic (Data.Complex.Complex a)
instance GHC.Generics.Generic1 Data.Complex.Complex
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1Complex
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0Complex
instance GHC.Generics.Generic1 Data.Proxy.Proxy
instance GHC.Generics.Datatype Generics.Deriving.Instances.D1Proxy
instance GHC.Generics.Constructor Generics.Deriving.Instances.C1_0Proxy

module Generics.Deriving.Base

-- | Constants of kind <tt>#</tt>

-- | Type synonym for <a>URec</a>: <a>Addr#</a>
type UAddr = URec (Ptr ())

-- | Type synonym for <a>URec</a>: <a>Char#</a>
type UChar = URec Char

-- | Type synonym for <a>URec</a>: <a>Double#</a>
type UDouble = URec Double

-- | Type synonym for <a>URec</a>: <a>Float#</a>
type UFloat = URec Float

-- | Type synonym for <a>URec</a>: <a>Int#</a>
type UInt = URec Int

-- | Type synonym for <a>URec</a>: <a>Word#</a>
type UWord = URec Word

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 f => Generics.Deriving.Copoint.GCopoint (Data.Monoid.Alt 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)


-- | 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.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.Internal.UAddr
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.Internal.UChar
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.Internal.UDouble
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.Internal.UFloat
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.Internal.UInt
instance Generics.Deriving.Eq.GEq' Generics.Deriving.Base.Internal.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 forall (k :: BOX) (f :: k -> *) (a :: k). 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 (Data.Complex.Complex a)
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 (Generics.Deriving.Base.Internal.UAddr p)
instance Generics.Deriving.Eq.GEq (Generics.Deriving.Base.Internal.UChar p)
instance Generics.Deriving.Eq.GEq (Generics.Deriving.Base.Internal.UDouble p)
instance Generics.Deriving.Eq.GEq (Generics.Deriving.Base.Internal.UFloat p)
instance Generics.Deriving.Eq.GEq (Generics.Deriving.Base.Internal.UInt p)
instance Generics.Deriving.Eq.GEq (Generics.Deriving.Base.Internal.UWord p)
instance Generics.Deriving.Eq.GEq Data.Version.Version
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 <a>True</a> 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 forall (k :: BOX) (f :: k -> *) (a :: k). 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 (Data.Complex.Complex a)
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 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 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.Natural.Natural
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 forall (k :: BOX) (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.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 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.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' Generics.Deriving.Base.Internal.UAddr
instance Generics.Deriving.Functor.GFunctor' Generics.Deriving.Base.Internal.UChar
instance Generics.Deriving.Functor.GFunctor' Generics.Deriving.Base.Internal.UDouble
instance Generics.Deriving.Functor.GFunctor' Generics.Deriving.Base.Internal.UFloat
instance Generics.Deriving.Functor.GFunctor' Generics.Deriving.Base.Internal.UInt
instance Generics.Deriving.Functor.GFunctor' Generics.Deriving.Base.Internal.UWord
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 Data.Complex.Complex
instance Generics.Deriving.Functor.GFunctor (Control.Applicative.Const m)
instance Generics.Deriving.Functor.GFunctor Data.Monoid.Dual
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 Data.Monoid.Product
instance Generics.Deriving.Functor.GFunctor Data.Proxy.Proxy
instance Generics.Deriving.Functor.GFunctor Data.Monoid.Sum
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.Internal.UChar
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.Internal.UDouble
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.Internal.UFloat
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.Internal.UInt
instance Generics.Deriving.Show.GShow' Generics.Deriving.Base.Internal.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 (Data.Complex.Complex a)
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 (Generics.Deriving.Base.Internal.UChar p)
instance Generics.Deriving.Show.GShow (Generics.Deriving.Base.Internal.UDouble p)
instance Generics.Deriving.Show.GShow (Generics.Deriving.Base.Internal.UFloat p)
instance Generics.Deriving.Show.GShow (Generics.Deriving.Base.Internal.UInt p)
instance Generics.Deriving.Show.GShow (Generics.Deriving.Base.Internal.UWord p)
instance Generics.Deriving.Show.GShow Data.Version.Version
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' Generics.Deriving.Base.Internal.UAddr
instance Generics.Deriving.Foldable.GFoldable' Generics.Deriving.Base.Internal.UChar
instance Generics.Deriving.Foldable.GFoldable' Generics.Deriving.Base.Internal.UDouble
instance Generics.Deriving.Foldable.GFoldable' Generics.Deriving.Base.Internal.UFloat
instance Generics.Deriving.Foldable.GFoldable' Generics.Deriving.Base.Internal.UInt
instance Generics.Deriving.Foldable.GFoldable' Generics.Deriving.Base.Internal.UWord
instance Generics.Deriving.Foldable.GFoldable ((,) a)
instance Generics.Deriving.Foldable.GFoldable []
instance Generics.Deriving.Foldable.GFoldable Data.Complex.Complex
instance Generics.Deriving.Foldable.GFoldable (Control.Applicative.Const m)
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Dual
instance Generics.Deriving.Foldable.GFoldable (Data.Either.Either a)
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.First
instance Generics.Deriving.Foldable.GFoldable Data.Functor.Identity.Identity
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Last
instance Generics.Deriving.Foldable.GFoldable GHC.Base.Maybe
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Product
instance Generics.Deriving.Foldable.GFoldable Data.Proxy.Proxy
instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Sum
instance Generics.Deriving.Foldable.GFoldable Control.Applicative.ZipList


-- | This module provides two main features:
--   
--   <ol>
--   <li><a>GMonoid</a>, a generic version of the <a>Monoid</a> type class,
--   including instances of the types from <a>Data.Monoid</a></li>
--   <li>Default generic definitions for the <a>Monoid</a> methods
--   <a>mempty</a> and <a>mappend</a></li>
--   </ol>
--   
--   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 <a>mempty</a>
gmempty :: GMonoid a => a

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

-- | Generic <a>mconcat</a>
gmconcat :: GMonoid a => [a] -> a
gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a
gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a
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 GHC.Base.Alternative f => Generics.Deriving.Monoid.GMonoid (Data.Monoid.Alt f 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.Semigroup
class GSemigroup a where gsappend = gsappenddefault gstimes y0 x0 | y0 <= 0 = error "gstimes: positive multiplier expected" | otherwise = f x0 y0 where f x y | even y = f (gsappend x x) (y `quot` 2) | y == 1 = x | otherwise = g (gsappend x x) (pred y `quot` 2) x g x y z | even y = g (gsappend x x) (y `quot` 2) z | y == 1 = gsappend x z | otherwise = g (gsappend x x) (pred y `quot` 2) (gsappend x z)
gsappend :: GSemigroup a => a -> a -> a
gstimes :: (GSemigroup a, Integral b) => b -> a -> a
gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a
instance Generics.Deriving.Semigroup.GSemigroup' GHC.Generics.U1
instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup' (GHC.Generics.K1 i a)
instance Generics.Deriving.Semigroup.GSemigroup' f => Generics.Deriving.Semigroup.GSemigroup' (GHC.Generics.M1 i c f)
instance (Generics.Deriving.Semigroup.GSemigroup' f, Generics.Deriving.Semigroup.GSemigroup' g) => Generics.Deriving.Semigroup.GSemigroup' (f GHC.Generics.:*: g)
instance Generics.Deriving.Semigroup.GSemigroup GHC.Types.Ordering
instance Generics.Deriving.Semigroup.GSemigroup ()
instance Generics.Deriving.Semigroup.GSemigroup Data.Monoid.Any
instance Generics.Deriving.Semigroup.GSemigroup Data.Monoid.All
instance Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.First a)
instance Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Last a)
instance GHC.Num.Num a => Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Sum a)
instance GHC.Num.Num a => Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Product a)
instance Generics.Deriving.Semigroup.GSemigroup [a]
instance Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Endo a)
instance GHC.Base.Alternative f => Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Alt f a)
instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (Data.Monoid.Dual a)
instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (GHC.Base.Maybe a)
instance Generics.Deriving.Semigroup.GSemigroup b => Generics.Deriving.Semigroup.GSemigroup (a -> b)
instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (Control.Applicative.Const a b)
instance Generics.Deriving.Semigroup.GSemigroup (Data.Either.Either a b)
instance Generics.Deriving.Semigroup.GSemigroup (Data.Proxy.Proxy s)
instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (Data.Functor.Identity.Identity a)
instance Generics.Deriving.Semigroup.GSemigroup Data.Void.Void
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b) => Generics.Deriving.Semigroup.GSemigroup (a, b)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c) => Generics.Deriving.Semigroup.GSemigroup (a, b, c)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c, Generics.Deriving.Semigroup.GSemigroup d) => Generics.Deriving.Semigroup.GSemigroup (a, b, c, d)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c, Generics.Deriving.Semigroup.GSemigroup d, Generics.Deriving.Semigroup.GSemigroup e) => Generics.Deriving.Semigroup.GSemigroup (a, b, c, d, e)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c, Generics.Deriving.Semigroup.GSemigroup d, Generics.Deriving.Semigroup.GSemigroup e, Generics.Deriving.Semigroup.GSemigroup f) => Generics.Deriving.Semigroup.GSemigroup (a, b, c, d, e, f)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c, Generics.Deriving.Semigroup.GSemigroup d, Generics.Deriving.Semigroup.GSemigroup e, Generics.Deriving.Semigroup.GSemigroup f, Generics.Deriving.Semigroup.GSemigroup g) => Generics.Deriving.Semigroup.GSemigroup (a, b, c, d, e, f, g)
instance (Generics.Deriving.Semigroup.GSemigroup a, Generics.Deriving.Semigroup.GSemigroup b, Generics.Deriving.Semigroup.GSemigroup c, Generics.Deriving.Semigroup.GSemigroup d, Generics.Deriving.Semigroup.GSemigroup e, Generics.Deriving.Semigroup.GSemigroup f, Generics.Deriving.Semigroup.GSemigroup g, Generics.Deriving.Semigroup.GSemigroup h) => Generics.Deriving.Semigroup.GSemigroup (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' Generics.Deriving.Base.Internal.UAddr
instance Generics.Deriving.Traversable.GTraversable' Generics.Deriving.Base.Internal.UChar
instance Generics.Deriving.Traversable.GTraversable' Generics.Deriving.Base.Internal.UDouble
instance Generics.Deriving.Traversable.GTraversable' Generics.Deriving.Base.Internal.UFloat
instance Generics.Deriving.Traversable.GTraversable' Generics.Deriving.Base.Internal.UInt
instance Generics.Deriving.Traversable.GTraversable' Generics.Deriving.Base.Internal.UWord
instance Generics.Deriving.Traversable.GTraversable ((,) a)
instance Generics.Deriving.Traversable.GTraversable []
instance Generics.Deriving.Traversable.GTraversable Data.Complex.Complex
instance Generics.Deriving.Traversable.GTraversable (Control.Applicative.Const m)
instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Dual
instance Generics.Deriving.Traversable.GTraversable (Data.Either.Either a)
instance Generics.Deriving.Traversable.GTraversable Data.Monoid.First
instance Generics.Deriving.Traversable.GTraversable Data.Functor.Identity.Identity
instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Last
instance Generics.Deriving.Traversable.GTraversable GHC.Base.Maybe
instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Product
instance Generics.Deriving.Traversable.GTraversable Data.Proxy.Proxy
instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Sum
instance Generics.Deriving.Traversable.GTraversable Control.Applicative.ZipList

module Generics.Deriving
