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

-- | A small compatibility shim for the transformers library
--   
--   This package includes backported versions of types that were added to
--   transformers in transformers 0.3, 0.4, and 0.5 for users who need
--   strict transformers 0.2 or 0.3 compatibility to run on old versions of
--   the platform, but also need those types.
--   
--   Those users should be able to just depend on transformers >=
--   0.2 and transformers-compat >= 0.3.
--   
--   Note: missing methods are not supplied, but this at least permits the
--   types to be used.
@package transformers-compat
@version 0.7.2

-- | Backports orphan instances which are not provided by other modules in
--   transformers-compat.
module Control.Monad.Trans.Instances

-- | Internal functionality for Data.Functor.Classes.Generic.
--   
--   This is an internal module and, as such, the API is not guaranteed to
--   remain the same between any given release.
module Data.Functor.Classes.Generic.Internal

-- | Options that further configure how the functions in
--   Data.Functor.Classes.Generic should behave.
newtype Options
Options :: Bool -> Options

-- | If True, a default Show1 implementation will show hash
--   signs (#) when showing unlifted types.
[ghc8ShowBehavior] :: Options -> Bool

-- | Options that match the behavior of the installed version of GHC.
defaultOptions :: Options

-- | Options that match the behavior of the most recent GHC release.
latestGHCOptions :: Options

-- | A sensible default liftEq implementation for Generic1
--   instances.
liftEqDefault :: (GEq1 NonV4 (Rep1 f), Generic1 f) => (a -> b -> Bool) -> f a -> f b -> Bool

-- | Like liftEqDefault, but with configurable Options.
--   Currently, the Options have no effect (but this may change in
--   the future).
liftEqOptions :: (GEq1 NonV4 (Rep1 f), Generic1 f) => Options -> (a -> b -> Bool) -> f a -> f b -> Bool

-- | Class of generic representation types that can lift equality through
--   unary type constructors.
class forall a. Eq a => GEq t a => GEq1 v (t :: Type -> Type)
gliftEq :: GEq1 v t => Eq1Args v a b -> t a -> t b -> Bool

-- | An Eq1Args value either stores an Eq a dictionary (for
--   the transformers-0.4 version of Eq1), or it stores the
--   function argument that checks the equality of occurrences of the type
--   parameter (for the non-transformers-0.4 version of
--   Eq1).
data Eq1Args v a b
[V4Eq1Args] :: forall a. Eq a => Eq1Args V4 a a
[NonV4Eq1Args] :: forall a b. (a -> b -> Bool) -> Eq1Args NonV4 a b

-- | A sensible default liftCompare implementation for
--   Generic1 instances.
liftCompareDefault :: (GOrd1 NonV4 (Rep1 f), Generic1 f) => (a -> b -> Ordering) -> f a -> f b -> Ordering

-- | Like liftCompareDefault, but with configurable Options.
--   Currently, the Options have no effect (but this may change in
--   the future).
liftCompareOptions :: (GOrd1 NonV4 (Rep1 f), Generic1 f) => Options -> (a -> b -> Ordering) -> f a -> f b -> Ordering

-- | Class of generic representation types that can lift a total order
--   through unary type constructors.
class (GEq1 v t, forall a. Ord a => GOrd t a) => GOrd1 v (t :: Type -> Type)
gliftCompare :: GOrd1 v t => Ord1Args v a b -> t a -> t b -> Ordering

-- | An Ord1Args value either stores an Ord a dictionary
--   (for the transformers-0.4 version of Ord1), or it
--   stores the function argument that compares occurrences of the type
--   parameter (for the non-transformers-0.4 version of
--   Ord1).
data Ord1Args v a b
[V4Ord1Args] :: forall a. Ord a => Ord1Args V4 a a
[NonV4Ord1Args] :: forall a b. (a -> b -> Ordering) -> Ord1Args NonV4 a b

-- | A sensible default liftReadsPrec implementation for
--   Generic1 instances.
liftReadsPrecDefault :: (GRead1 NonV4 (Rep1 f), Generic1 f) => (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (f a)

-- | Like liftReadsPrecDefault, but with configurable
--   Options. Currently, the Options have no effect (but this
--   may change in the future).
liftReadsPrecOptions :: (GRead1 NonV4 (Rep1 f), Generic1 f) => Options -> (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (f a)

-- | Class of generic representation types for unary type constructors that
--   can be parsed from a String.
class forall a. Read a => GRead f a => GRead1 v (f :: Type -> Type)
gliftReadPrec :: GRead1 v f => Read1Args v a -> ReadPrec (f a)

-- | Class of generic representation types for unary type constructors that
--   can be parsed from a String, and for which the ConType
--   has been determined.
class forall a. Read a => GReadCon f a => GRead1Con v (f :: Type -> Type)
gliftReadPrecCon :: GRead1Con v f => ConType -> Read1Args v a -> ReadPrec (f a)

-- | A Read1Args value either stores a Read a dictionary
--   (for the transformers-0.4 version of Read1), or it
--   stores the two function arguments that parse occurrences of the type
--   parameter (for the non-transformers-0.4 version of
--   Read1).
data Read1Args v a
[V4Read1Args] :: forall a. Read a => Read1Args V4 a
[NonV4Read1Args] :: forall a. ReadPrec a -> ReadPrec [a] -> Read1Args NonV4 a

-- | A sensible default liftShowsPrec implementation for
--   Generic1 instances.
liftShowsPrecDefault :: (GShow1 NonV4 (Rep1 f), Generic1 f) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

-- | Like liftShowsPrecDefault, but with configurable
--   Options.
liftShowsPrecOptions :: (GShow1 NonV4 (Rep1 f), Generic1 f) => Options -> (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

-- | Class of generic representation types for unary type constructors that
--   can be converted to a String.
class forall a. Show a => GShow f a => GShow1 v (f :: Type -> Type)
gliftShowsPrec :: GShow1 v f => Options -> Show1Args v a -> Int -> f a -> ShowS

-- | Class of generic representation types for unary type constructors that
--   can be converted to a String, and for which the ConType
--   has been determined.
class forall a. Show a => GShowCon f a => GShow1Con v (f :: Type -> Type)
gliftShowsPrecCon :: GShow1Con v f => Options -> ConType -> Show1Args v a -> Int -> f a -> ShowS

-- | A Show1Args value either stores a Show a dictionary
--   (for the transformers-0.4 version of Show1), or it
--   stores the two function arguments that show occurrences of the type
--   parameter (for the non-transformers-0.4 version of
--   Show1).
data Show1Args v a
[V4Show1Args] :: forall a. Show a => Show1Args V4 a
[NonV4Show1Args] :: forall a. (Int -> a -> ShowS) -> ([a] -> ShowS) -> Show1Args NonV4 a

-- | A default (==) implementation for Generic1
--   instances that leverages Eq1.
eqDefault :: (GEq (Rep1 f a), Generic1 f) => f a -> f a -> Bool

-- | Class of generic representation types that can be checked for
--   equality.
class GEq a
geq :: GEq a => a -> a -> Bool

-- | A default compare implementation for Generic1 instances
--   that leverages Ord1.
compareDefault :: (GOrd (Rep1 f a), Generic1 f) => f a -> f a -> Ordering

-- | Class of generic representation types that can be totally ordered.
class GEq a => GOrd a
gcompare :: GOrd a => a -> a -> Ordering

-- | A default readsPrec implementation for Generic1
--   instances that leverages Read1.
readsPrecDefault :: (GRead (Rep1 f a), Generic1 f) => Int -> ReadS (f a)

-- | Class of generic representation types that can be parsed from a
--   String.
class GRead a
greadPrec :: GRead a => ReadPrec a

-- | A default showsPrec implementation for Generic1
--   instances that leverages Show1.
showsPrecDefault :: (GShow (Rep1 f a), Generic1 f) => Int -> f a -> ShowS

-- | Like showsPrecDefault, but with configurable Options.
showsPrecOptions :: (GShow (Rep1 f a), Generic1 f) => Options -> Int -> f a -> ShowS

-- | Class of generic representation types that can be converted to a
--   String.
class GShow a
gshowsPrec :: GShow a => Options -> Int -> a -> ShowS

-- | An adapter newtype, suitable for DerivingVia. Its Eq1,
--   Ord1, Read1, and Show1 instances leverage
--   Generic1-based defaults.
newtype FunctorClassesDefault (f :: Type -> Type) a
FunctorClassesDefault :: f a -> FunctorClassesDefault (f :: Type -> Type) a
[getFunctorClassesDefault] :: FunctorClassesDefault (f :: Type -> Type) a -> f a

-- | A type-level indicator that the transformers-0.4 version of a
--   class method is being derived generically.
data V4

-- | A type-level indicator that the non-transformers-0.4 version
--   of a class method is being derived generically.
data NonV4

-- | Whether a constructor is a record (Rec), a tuple (Tup),
--   is prefix (Pref), or infix (Inf).
data ConType
Rec :: ConType
Tup :: ConType
Pref :: ConType
Inf :: String -> ConType

-- | Class of generic representation types that represent a data type with
--   zero or more constructors.
class IsNullaryDataType (f :: Type -> Type)

-- | Returns True if the data type has no constructors.
isNullaryDataType :: IsNullaryDataType f => f a -> Bool

-- | Class of generic representation types that represent a constructor
--   with zero or more fields.
class IsNullaryCon (f :: Type -> Type)

-- | Returns True if the constructor has no fields.
isNullaryCon :: IsNullaryCon f => f a -> Bool
instance (Data.Functor.Classes.Generic.Internal.GEq1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rep1 f), GHC.Internal.Generics.Generic1 f) => Data.Functor.Classes.Eq1 (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f)
instance (Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.Rep1 f a), GHC.Internal.Generics.Generic1 f) => GHC.Classes.Eq (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)
instance (Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Generic.Internal.GEq1 Data.Functor.Classes.Generic.Internal.NonV4 g) => Data.Functor.Classes.Generic.Internal.GEq1 Data.Functor.Classes.Generic.Internal.NonV4 (f GHC.Internal.Generics.:.: g)
instance Data.Functor.Classes.Generic.Internal.GEq1 Data.Functor.Classes.Generic.Internal.NonV4 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Eq1 f => Data.Functor.Classes.Generic.Internal.GEq1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rec1 f)
instance (Data.Functor.Classes.Generic.Internal.GEq1 v f, Data.Functor.Classes.Generic.Internal.GEq1 v g) => Data.Functor.Classes.Generic.Internal.GEq1 v (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Generic.Internal.GEq1 v f, Data.Functor.Classes.Generic.Internal.GEq1 v g) => Data.Functor.Classes.Generic.Internal.GEq1 v (f GHC.Internal.Generics.:+: g)
instance GHC.Classes.Eq c => Data.Functor.Classes.Generic.Internal.GEq1 v (GHC.Internal.Generics.K1 i c)
instance Data.Functor.Classes.Generic.Internal.GEq1 v f => Data.Functor.Classes.Generic.Internal.GEq1 v (GHC.Internal.Generics.M1 i c f)
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UAddr
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.UWord
instance Data.Functor.Classes.Generic.Internal.GEq1 v GHC.Internal.Generics.V1
instance (Data.Functor.Classes.Generic.Internal.GEq (f p), Data.Functor.Classes.Generic.Internal.GEq (g p)) => Data.Functor.Classes.Generic.Internal.GEq ((GHC.Internal.Generics.:*:) f g p)
instance (Data.Functor.Classes.Generic.Internal.GEq (f p), Data.Functor.Classes.Generic.Internal.GEq (g p)) => Data.Functor.Classes.Generic.Internal.GEq ((GHC.Internal.Generics.:+:) f g p)
instance (Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Generic.Internal.GEq (g p)) => Data.Functor.Classes.Generic.Internal.GEq ((GHC.Internal.Generics.:.:) f g p)
instance GHC.Classes.Eq c => Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.K1 i c p)
instance Data.Functor.Classes.Generic.Internal.GEq (f p) => Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.M1 i c f p)
instance GHC.Classes.Eq p => Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Eq1 f, GHC.Classes.Eq p) => Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.Rec1 f p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.U1 p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UAddr p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UChar p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UDouble p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UFloat p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UInt p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.UWord p)
instance Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.V1 p)
instance (Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Generic.Internal.GOrd1 Data.Functor.Classes.Generic.Internal.NonV4 g) => Data.Functor.Classes.Generic.Internal.GOrd1 Data.Functor.Classes.Generic.Internal.NonV4 (f GHC.Internal.Generics.:.: g)
instance Data.Functor.Classes.Generic.Internal.GOrd1 Data.Functor.Classes.Generic.Internal.NonV4 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Ord1 f => Data.Functor.Classes.Generic.Internal.GOrd1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rec1 f)
instance (Data.Functor.Classes.Generic.Internal.GOrd1 v f, Data.Functor.Classes.Generic.Internal.GOrd1 v g) => Data.Functor.Classes.Generic.Internal.GOrd1 v (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Generic.Internal.GOrd1 v f, Data.Functor.Classes.Generic.Internal.GOrd1 v g) => Data.Functor.Classes.Generic.Internal.GOrd1 v (f GHC.Internal.Generics.:+: g)
instance GHC.Classes.Ord c => Data.Functor.Classes.Generic.Internal.GOrd1 v (GHC.Internal.Generics.K1 i c)
instance Data.Functor.Classes.Generic.Internal.GOrd1 v f => Data.Functor.Classes.Generic.Internal.GOrd1 v (GHC.Internal.Generics.M1 i c f)
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UAddr
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.UWord
instance Data.Functor.Classes.Generic.Internal.GOrd1 v GHC.Internal.Generics.V1
instance (Data.Functor.Classes.Generic.Internal.GOrd (f p), Data.Functor.Classes.Generic.Internal.GOrd (g p)) => Data.Functor.Classes.Generic.Internal.GOrd ((GHC.Internal.Generics.:*:) f g p)
instance (Data.Functor.Classes.Generic.Internal.GOrd (f p), Data.Functor.Classes.Generic.Internal.GOrd (g p)) => Data.Functor.Classes.Generic.Internal.GOrd ((GHC.Internal.Generics.:+:) f g p)
instance (Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Generic.Internal.GOrd (g p)) => Data.Functor.Classes.Generic.Internal.GOrd ((GHC.Internal.Generics.:.:) f g p)
instance GHC.Classes.Ord c => Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.K1 i c p)
instance Data.Functor.Classes.Generic.Internal.GOrd (f p) => Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.M1 i c f p)
instance GHC.Classes.Ord p => Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Ord1 f, GHC.Classes.Ord p) => Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.Rec1 f p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.U1 p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UAddr p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UChar p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UDouble p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UFloat p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UInt p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.UWord p)
instance Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.V1 p)
instance (Data.Functor.Classes.Read1 f, Data.Functor.Classes.Generic.Internal.GRead1Con Data.Functor.Classes.Generic.Internal.NonV4 g) => Data.Functor.Classes.Generic.Internal.GRead1Con Data.Functor.Classes.Generic.Internal.NonV4 (f GHC.Internal.Generics.:.: g)
instance Data.Functor.Classes.Generic.Internal.GRead1Con Data.Functor.Classes.Generic.Internal.NonV4 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Read1 f => Data.Functor.Classes.Generic.Internal.GRead1Con Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rec1 f)
instance (Data.Functor.Classes.Generic.Internal.GRead1Con v f, Data.Functor.Classes.Generic.Internal.GRead1Con v g) => Data.Functor.Classes.Generic.Internal.GRead1Con v (f GHC.Internal.Generics.:*: g)
instance GHC.Internal.Read.Read c => Data.Functor.Classes.Generic.Internal.GRead1Con v (GHC.Internal.Generics.K1 i c)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GRead1Con v f) => Data.Functor.Classes.Generic.Internal.GRead1Con v (GHC.Internal.Generics.S1 s f)
instance Data.Functor.Classes.Generic.Internal.GRead1Con v GHC.Internal.Generics.U1
instance (Data.Functor.Classes.Generic.Internal.GRead1 v f, Data.Functor.Classes.Generic.Internal.GRead1 v g) => Data.Functor.Classes.Generic.Internal.GRead1 v (f GHC.Internal.Generics.:+: g)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GRead1Con v f, Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GRead1 v (GHC.Internal.Generics.C1 c f)
instance (Data.Functor.Classes.Generic.Internal.GRead1 v f, Data.Functor.Classes.Generic.Internal.IsNullaryDataType f) => Data.Functor.Classes.Generic.Internal.GRead1 v (GHC.Internal.Generics.D1 d f)
instance Data.Functor.Classes.Generic.Internal.GRead1 v GHC.Internal.Generics.V1
instance (Data.Functor.Classes.Generic.Internal.GReadCon (f p), Data.Functor.Classes.Generic.Internal.GReadCon (g p)) => Data.Functor.Classes.Generic.Internal.GReadCon ((GHC.Internal.Generics.:*:) f g p)
instance (Data.Functor.Classes.Read1 f, Data.Functor.Classes.Generic.Internal.GReadCon (g p)) => Data.Functor.Classes.Generic.Internal.GReadCon ((GHC.Internal.Generics.:.:) f g p)
instance GHC.Internal.Read.Read c => Data.Functor.Classes.Generic.Internal.GReadCon (GHC.Internal.Generics.K1 i c p)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GReadCon (f p)) => Data.Functor.Classes.Generic.Internal.GReadCon (GHC.Internal.Generics.S1 s f p)
instance GHC.Internal.Read.Read p => Data.Functor.Classes.Generic.Internal.GReadCon (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Read1 f, GHC.Internal.Read.Read p) => Data.Functor.Classes.Generic.Internal.GReadCon (GHC.Internal.Generics.Rec1 f p)
instance Data.Functor.Classes.Generic.Internal.GReadCon (GHC.Internal.Generics.U1 p)
instance (Data.Functor.Classes.Generic.Internal.GRead (f p), Data.Functor.Classes.Generic.Internal.GRead (g p)) => Data.Functor.Classes.Generic.Internal.GRead ((GHC.Internal.Generics.:+:) f g p)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GReadCon (f p), Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GRead (GHC.Internal.Generics.C1 c f p)
instance (Data.Functor.Classes.Generic.Internal.GRead (f p), Data.Functor.Classes.Generic.Internal.IsNullaryDataType f) => Data.Functor.Classes.Generic.Internal.GRead (GHC.Internal.Generics.D1 d f p)
instance Data.Functor.Classes.Generic.Internal.GRead (GHC.Internal.Generics.V1 p)
instance (Data.Functor.Classes.Show1 f, Data.Functor.Classes.Generic.Internal.GShow1Con Data.Functor.Classes.Generic.Internal.NonV4 g) => Data.Functor.Classes.Generic.Internal.GShow1Con Data.Functor.Classes.Generic.Internal.NonV4 (f GHC.Internal.Generics.:.: g)
instance Data.Functor.Classes.Generic.Internal.GShow1Con Data.Functor.Classes.Generic.Internal.NonV4 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Show1 f => Data.Functor.Classes.Generic.Internal.GShow1Con Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rec1 f)
instance (Data.Functor.Classes.Generic.Internal.GShow1Con v f, Data.Functor.Classes.Generic.Internal.GShow1Con v g) => Data.Functor.Classes.Generic.Internal.GShow1Con v (f GHC.Internal.Generics.:*: g)
instance GHC.Internal.Show.Show c => Data.Functor.Classes.Generic.Internal.GShow1Con v (GHC.Internal.Generics.K1 i c)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GShow1Con v f) => Data.Functor.Classes.Generic.Internal.GShow1Con v (GHC.Internal.Generics.S1 s f)
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GShow1Con v GHC.Internal.Generics.UWord
instance (Data.Functor.Classes.Generic.Internal.GShow1 v f, Data.Functor.Classes.Generic.Internal.GShow1 v g) => Data.Functor.Classes.Generic.Internal.GShow1 v (f GHC.Internal.Generics.:+: g)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GShow1Con v f, Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GShow1 v (GHC.Internal.Generics.C1 c f)
instance Data.Functor.Classes.Generic.Internal.GShow1 v f => Data.Functor.Classes.Generic.Internal.GShow1 v (GHC.Internal.Generics.D1 d f)
instance Data.Functor.Classes.Generic.Internal.GShow1 v GHC.Internal.Generics.V1
instance (Data.Functor.Classes.Generic.Internal.GShowCon (f p), Data.Functor.Classes.Generic.Internal.GShowCon (g p)) => Data.Functor.Classes.Generic.Internal.GShowCon ((GHC.Internal.Generics.:*:) f g p)
instance (Data.Functor.Classes.Show1 f, Data.Functor.Classes.Generic.Internal.GShowCon (g p)) => Data.Functor.Classes.Generic.Internal.GShowCon ((GHC.Internal.Generics.:.:) f g p)
instance GHC.Internal.Show.Show c => Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.K1 i c p)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GShowCon (f p)) => Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.S1 s f p)
instance GHC.Internal.Show.Show p => Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Show1 f, GHC.Internal.Show.Show p) => Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.Rec1 f p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.U1 p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.UChar p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.UDouble p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.UFloat p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.UInt p)
instance Data.Functor.Classes.Generic.Internal.GShowCon (GHC.Internal.Generics.UWord p)
instance (Data.Functor.Classes.Generic.Internal.GShow (f p), Data.Functor.Classes.Generic.Internal.GShow (g p)) => Data.Functor.Classes.Generic.Internal.GShow ((GHC.Internal.Generics.:+:) f g p)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GShowCon (f p), Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GShow (GHC.Internal.Generics.C1 c f p)
instance Data.Functor.Classes.Generic.Internal.GShow (f p) => Data.Functor.Classes.Generic.Internal.GShow (GHC.Internal.Generics.D1 d f p)
instance Data.Functor.Classes.Generic.Internal.GShow (GHC.Internal.Generics.V1 p)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon (f GHC.Internal.Generics.:*: g)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon (f GHC.Internal.Generics.:.: g)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon (GHC.Internal.Generics.K1 i c)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon f => Data.Functor.Classes.Generic.Internal.IsNullaryCon (GHC.Internal.Generics.S1 s f)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon (GHC.Internal.Generics.Rec1 f)
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.IsNullaryCon GHC.Internal.Generics.UWord
instance Data.Functor.Classes.Generic.Internal.IsNullaryDataType (f GHC.Internal.Generics.:+: g)
instance Data.Functor.Classes.Generic.Internal.IsNullaryDataType (GHC.Internal.Generics.C1 c f)
instance Data.Functor.Classes.Generic.Internal.IsNullaryDataType GHC.Internal.Generics.V1
instance (Data.Functor.Classes.Generic.Internal.GOrd1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rep1 f), GHC.Internal.Generics.Generic1 f) => Data.Functor.Classes.Ord1 (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f)
instance (Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.Rep1 f a), GHC.Internal.Generics.Generic1 f) => GHC.Classes.Ord (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)
instance (Data.Functor.Classes.Generic.Internal.GRead1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rep1 f), GHC.Internal.Generics.Generic1 f) => Data.Functor.Classes.Read1 (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f)
instance (Data.Functor.Classes.Generic.Internal.GRead (GHC.Internal.Generics.Rep1 f a), GHC.Internal.Generics.Generic1 f) => GHC.Internal.Read.Read (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)
instance (Data.Functor.Classes.Generic.Internal.GShow1 Data.Functor.Classes.Generic.Internal.NonV4 (GHC.Internal.Generics.Rep1 f), GHC.Internal.Generics.Generic1 f) => Data.Functor.Classes.Show1 (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f)
instance (Data.Functor.Classes.Generic.Internal.GShow (GHC.Internal.Generics.Rep1 f a), GHC.Internal.Generics.Generic1 f) => GHC.Internal.Show.Show (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)

-- | Functions to generically derive Eq1, Ord1, Read1,
--   and Show1 instances from Data.Functor.Classes.
module Data.Functor.Classes.Generic

-- | Options that further configure how the functions in
--   Data.Functor.Classes.Generic should behave.
newtype Options
Options :: Bool -> Options

-- | If True, a default Show1 implementation will show hash
--   signs (#) when showing unlifted types.
[ghc8ShowBehavior] :: Options -> Bool

-- | Options that match the behavior of the installed version of GHC.
defaultOptions :: Options

-- | Options that match the behavior of the most recent GHC release.
latestGHCOptions :: Options

-- | A sensible default liftEq implementation for Generic1
--   instances.
liftEqDefault :: (GEq1 NonV4 (Rep1 f), Generic1 f) => (a -> b -> Bool) -> f a -> f b -> Bool

-- | Like liftEqDefault, but with configurable Options.
--   Currently, the Options have no effect (but this may change in
--   the future).
liftEqOptions :: (GEq1 NonV4 (Rep1 f), Generic1 f) => Options -> (a -> b -> Bool) -> f a -> f b -> Bool

-- | A sensible default liftCompare implementation for
--   Generic1 instances.
liftCompareDefault :: (GOrd1 NonV4 (Rep1 f), Generic1 f) => (a -> b -> Ordering) -> f a -> f b -> Ordering

-- | Like liftCompareDefault, but with configurable Options.
--   Currently, the Options have no effect (but this may change in
--   the future).
liftCompareOptions :: (GOrd1 NonV4 (Rep1 f), Generic1 f) => Options -> (a -> b -> Ordering) -> f a -> f b -> Ordering

-- | A sensible default liftReadsPrec implementation for
--   Generic1 instances.
liftReadsPrecDefault :: (GRead1 NonV4 (Rep1 f), Generic1 f) => (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (f a)

-- | Like liftReadsPrecDefault, but with configurable
--   Options. Currently, the Options have no effect (but this
--   may change in the future).
liftReadsPrecOptions :: (GRead1 NonV4 (Rep1 f), Generic1 f) => Options -> (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (f a)

-- | A sensible default liftShowsPrec implementation for
--   Generic1 instances.
liftShowsPrecDefault :: (GShow1 NonV4 (Rep1 f), Generic1 f) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

-- | Like liftShowsPrecDefault, but with configurable
--   Options.
liftShowsPrecOptions :: (GShow1 NonV4 (Rep1 f), Generic1 f) => Options -> (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

-- | An adapter newtype, suitable for DerivingVia. Its Eq1,
--   Ord1, Read1, and Show1 instances leverage
--   Generic1-based defaults.
newtype FunctorClassesDefault (f :: Type -> Type) a
FunctorClassesDefault :: f a -> FunctorClassesDefault (f :: Type -> Type) a
[getFunctorClassesDefault] :: FunctorClassesDefault (f :: Type -> Type) a -> f a
