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


-- | This package includes backported versions of types that were added to
--   <tt>transformers</tt> in <tt>transformers-0.5</tt> for users who need
--   strict <tt>transformers-0.5</tt> compatibility, but also need those
--   types.
--   
--   Those users should be able to just depend on <tt>transformers &gt;=
--   0.5</tt> and <tt>transformers-compat &gt;= 0.7.3</tt>.
--   
--   Note: missing methods are not supplied, but this at least permits the
--   types to be used.
@package transformers-compat
@version 0.8


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


-- | Internal functionality for <a>Data.Functor.Classes.Generic</a>.
--   
--   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
--   <a>Data.Functor.Classes.Generic</a> should behave. Currently, the
--   <a>Options</a> have no effect (but this may change in the future).
data Options
Options :: Options

-- | 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 <a>liftEq</a> implementation for <a>Generic1</a>
--   instances.
liftEqDefault :: (GEq1 (Rep1 f), Generic1 f) => (a -> b -> Bool) -> f a -> f b -> Bool

-- | Like <a>liftEqDefault</a>, but with configurable <a>Options</a>.
--   Currently, the <a>Options</a> have no effect (but this may change in
--   the future).
liftEqOptions :: (GEq1 (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 (t :: Type -> Type)
gliftEq :: GEq1 t => (a -> b -> Bool) -> t a -> t b -> Bool

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

-- | Like <a>liftCompareDefault</a>, but with configurable <a>Options</a>.
--   Currently, the <a>Options</a> have no effect (but this may change in
--   the future).
liftCompareOptions :: (GOrd1 (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 t, forall a. Ord a => GOrd t a) => GOrd1 (t :: Type -> Type)
gliftCompare :: GOrd1 t => (a -> b -> Ordering) -> t a -> t b -> Ordering

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

-- | Like <a>liftReadsPrecDefault</a>, but with configurable
--   <a>Options</a>. Currently, the <a>Options</a> have no effect (but this
--   may change in the future).
liftReadsPrecOptions :: (GRead1 (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 <a>String</a>.
class forall a. Read a => GRead f a => GRead1 (f :: Type -> Type)
gliftReadPrec :: GRead1 f => ReadPrec a -> ReadPrec [a] -> ReadPrec (f a)

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

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

-- | Like <a>liftShowsPrecDefault</a>, but with configurable
--   <a>Options</a>. Currently, the <a>Options</a> have no effect (but this
--   may change in the future).
liftShowsPrecOptions :: (GShow1 (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 <a>String</a>.
class forall a. Show a => GShow f a => GShow1 (f :: Type -> Type)
gliftShowsPrec :: GShow1 f => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

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

-- | A default <tt>(<a>==</a>)</tt> implementation for <a>Generic1</a>
--   instances that leverages <a>Eq1</a>.
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 <a>compare</a> implementation for <a>Generic1</a> instances
--   that leverages <a>Ord1</a>.
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 <a>readsPrec</a> implementation for <a>Generic1</a>
--   instances that leverages <a>Read1</a>.
readsPrecDefault :: (GRead (Rep1 f a), Generic1 f) => Int -> ReadS (f a)

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

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

-- | Like <a>showsPrecDefault</a>, but with configurable <a>Options</a>.
--   Currently, the <a>Options</a> have no effect (but this may change in
--   the future).
showsPrecOptions :: (GShow (Rep1 f a), Generic1 f) => Options -> Int -> f a -> ShowS

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

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

-- | Whether a constructor is a record (<a>Rec</a>), a tuple (<a>Tup</a>),
--   is prefix (<a>Pref</a>), or infix (<a>Inf</a>).
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 <a>True</a> 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 <a>True</a> if the constructor has no fields.
isNullaryCon :: IsNullaryCon f => f a -> Bool
instance (Data.Functor.Classes.Generic.Internal.GEq1 (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.Internal.Classes.Eq (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)
instance (Data.Functor.Classes.Generic.Internal.GEq1 f, Data.Functor.Classes.Generic.Internal.GEq1 g) => Data.Functor.Classes.Generic.Internal.GEq1 (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Generic.Internal.GEq1 f, Data.Functor.Classes.Generic.Internal.GEq1 g) => Data.Functor.Classes.Generic.Internal.GEq1 (f GHC.Internal.Generics.:+: g)
instance (Data.Functor.Classes.Eq1 f, Data.Functor.Classes.Generic.Internal.GEq1 g) => Data.Functor.Classes.Generic.Internal.GEq1 (f GHC.Internal.Generics.:.: g)
instance GHC.Internal.Classes.Eq c => Data.Functor.Classes.Generic.Internal.GEq1 (GHC.Internal.Generics.K1 i c)
instance Data.Functor.Classes.Generic.Internal.GEq1 f => Data.Functor.Classes.Generic.Internal.GEq1 (GHC.Internal.Generics.M1 i c f)
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Eq1 f => Data.Functor.Classes.Generic.Internal.GEq1 (GHC.Internal.Generics.Rec1 f)
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UAddr
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GEq1 GHC.Internal.Generics.UWord
instance Data.Functor.Classes.Generic.Internal.GEq1 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.Internal.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.Internal.Classes.Eq p => Data.Functor.Classes.Generic.Internal.GEq (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Eq1 f, GHC.Internal.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.Generic.Internal.GOrd1 f, Data.Functor.Classes.Generic.Internal.GOrd1 g) => Data.Functor.Classes.Generic.Internal.GOrd1 (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Generic.Internal.GOrd1 f, Data.Functor.Classes.Generic.Internal.GOrd1 g) => Data.Functor.Classes.Generic.Internal.GOrd1 (f GHC.Internal.Generics.:+: g)
instance (Data.Functor.Classes.Ord1 f, Data.Functor.Classes.Generic.Internal.GOrd1 g) => Data.Functor.Classes.Generic.Internal.GOrd1 (f GHC.Internal.Generics.:.: g)
instance GHC.Internal.Classes.Ord c => Data.Functor.Classes.Generic.Internal.GOrd1 (GHC.Internal.Generics.K1 i c)
instance Data.Functor.Classes.Generic.Internal.GOrd1 f => Data.Functor.Classes.Generic.Internal.GOrd1 (GHC.Internal.Generics.M1 i c f)
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Ord1 f => Data.Functor.Classes.Generic.Internal.GOrd1 (GHC.Internal.Generics.Rec1 f)
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UAddr
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GOrd1 GHC.Internal.Generics.UWord
instance Data.Functor.Classes.Generic.Internal.GOrd1 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.Internal.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.Internal.Classes.Ord p => Data.Functor.Classes.Generic.Internal.GOrd (GHC.Internal.Generics.Par1 p)
instance (Data.Functor.Classes.Ord1 f, GHC.Internal.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.Generic.Internal.GRead1Con f, Data.Functor.Classes.Generic.Internal.GRead1Con g) => Data.Functor.Classes.Generic.Internal.GRead1Con (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Read1 f, Data.Functor.Classes.Generic.Internal.GRead1Con g) => Data.Functor.Classes.Generic.Internal.GRead1Con (f GHC.Internal.Generics.:.: g)
instance GHC.Internal.Read.Read c => Data.Functor.Classes.Generic.Internal.GRead1Con (GHC.Internal.Generics.K1 i c)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GRead1Con f) => Data.Functor.Classes.Generic.Internal.GRead1Con (GHC.Internal.Generics.S1 s f)
instance Data.Functor.Classes.Generic.Internal.GRead1Con GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Read1 f => Data.Functor.Classes.Generic.Internal.GRead1Con (GHC.Internal.Generics.Rec1 f)
instance Data.Functor.Classes.Generic.Internal.GRead1Con GHC.Internal.Generics.U1
instance (Data.Functor.Classes.Generic.Internal.GRead1 f, Data.Functor.Classes.Generic.Internal.GRead1 g) => Data.Functor.Classes.Generic.Internal.GRead1 (f GHC.Internal.Generics.:+: g)
instance (Data.Functor.Classes.Generic.Internal.GRead1 f, Data.Functor.Classes.Generic.Internal.IsNullaryDataType f) => Data.Functor.Classes.Generic.Internal.GRead1 (GHC.Internal.Generics.D1 d f)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GRead1Con f, Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GRead1 (GHC.Internal.Generics.C1 c f)
instance Data.Functor.Classes.Generic.Internal.GRead1 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 (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 (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 (GHC.Internal.Generics.V1 p)
instance (Data.Functor.Classes.Generic.Internal.GShow1Con f, Data.Functor.Classes.Generic.Internal.GShow1Con g) => Data.Functor.Classes.Generic.Internal.GShow1Con (f GHC.Internal.Generics.:*: g)
instance (Data.Functor.Classes.Show1 f, Data.Functor.Classes.Generic.Internal.GShow1Con g) => Data.Functor.Classes.Generic.Internal.GShow1Con (f GHC.Internal.Generics.:.: g)
instance GHC.Internal.Show.Show c => Data.Functor.Classes.Generic.Internal.GShow1Con (GHC.Internal.Generics.K1 i c)
instance (GHC.Internal.Generics.Selector s, Data.Functor.Classes.Generic.Internal.GShow1Con f) => Data.Functor.Classes.Generic.Internal.GShow1Con (GHC.Internal.Generics.S1 s f)
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.Par1
instance Data.Functor.Classes.Show1 f => Data.Functor.Classes.Generic.Internal.GShow1Con (GHC.Internal.Generics.Rec1 f)
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.U1
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.UChar
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.UDouble
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.UFloat
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.UInt
instance Data.Functor.Classes.Generic.Internal.GShow1Con GHC.Internal.Generics.UWord
instance (Data.Functor.Classes.Generic.Internal.GShow1 f, Data.Functor.Classes.Generic.Internal.GShow1 g) => Data.Functor.Classes.Generic.Internal.GShow1 (f GHC.Internal.Generics.:+: g)
instance Data.Functor.Classes.Generic.Internal.GShow1 f => Data.Functor.Classes.Generic.Internal.GShow1 (GHC.Internal.Generics.D1 d f)
instance (GHC.Internal.Generics.Constructor c, Data.Functor.Classes.Generic.Internal.GShow1Con f, Data.Functor.Classes.Generic.Internal.IsNullaryCon f) => Data.Functor.Classes.Generic.Internal.GShow1 (GHC.Internal.Generics.C1 c f)
instance Data.Functor.Classes.Generic.Internal.GShow1 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 Data.Functor.Classes.Generic.Internal.GShow (f p) => Data.Functor.Classes.Generic.Internal.GShow (GHC.Internal.Generics.D1 d f 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 (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 (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.Internal.Classes.Ord (Data.Functor.Classes.Generic.Internal.FunctorClassesDefault f a)
instance (Data.Functor.Classes.Generic.Internal.GRead1 (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 (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 <a>Eq1</a>, <a>Ord1</a>, <a>Read1</a>,
--   and <a>Show1</a> instances from <a>Data.Functor.Classes</a>.
module Data.Functor.Classes.Generic

-- | Options that further configure how the functions in
--   <a>Data.Functor.Classes.Generic</a> should behave. Currently, the
--   <a>Options</a> have no effect (but this may change in the future).
data Options
Options :: Options

-- | 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 <a>liftEq</a> implementation for <a>Generic1</a>
--   instances.
liftEqDefault :: (GEq1 (Rep1 f), Generic1 f) => (a -> b -> Bool) -> f a -> f b -> Bool

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

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

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

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

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

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

-- | Like <a>liftShowsPrecDefault</a>, but with configurable
--   <a>Options</a>. Currently, the <a>Options</a> have no effect (but this
--   may change in the future).
liftShowsPrecOptions :: (GShow1 (Rep1 f), Generic1 f) => Options -> (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

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