-- 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 <tt>transformers &gt;=
--   0.2</tt> and <tt>transformers-compat &gt;= 0.3</tt>.
--   
--   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
--   <tt>transformers-compat</tt>.
module Control.Monad.Trans.Instances
instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Data.Functor.Constant.Constant a b)
instance forall k a (b :: k). GHC.Generics.Generic (Data.Functor.Constant.Constant a b)
instance GHC.Generics.Generic1 (Data.Functor.Constant.Constant a)
instance forall k (r :: k) (m :: k -> *) a. GHC.Generics.Generic (Control.Monad.Trans.Cont.ContT r m a)
instance forall k (f :: k -> *) (a :: k). GHC.Generics.Generic (Control.Monad.Trans.Identity.IdentityT f a)
instance forall k (f :: k -> *). GHC.Generics.Generic1 (Control.Monad.Trans.Identity.IdentityT f)
instance GHC.Generics.Generic (Control.Monad.Trans.Maybe.MaybeT m a)
instance GHC.Base.Functor m => GHC.Generics.Generic1 (Control.Monad.Trans.Maybe.MaybeT m)
instance GHC.Generics.Generic (Control.Monad.Trans.RWS.Lazy.RWST r w s m a)
instance GHC.Generics.Generic (Control.Monad.Trans.RWS.Strict.RWST r w s m a)
instance GHC.Generics.Generic (Control.Monad.Trans.Reader.ReaderT r m a)
instance GHC.Generics.Generic1 (Control.Monad.Trans.Reader.ReaderT r m)
instance GHC.Generics.Generic (Control.Monad.Trans.State.Lazy.StateT s m a)
instance GHC.Generics.Generic (Control.Monad.Trans.State.Strict.StateT s m a)
instance GHC.Generics.Generic (Control.Monad.Trans.Writer.Lazy.WriterT w m a)
instance GHC.Generics.Generic (Control.Monad.Trans.Writer.Strict.WriterT w m a)
instance forall k (f :: k -> *) (a :: k). GHC.Generics.Generic (Control.Applicative.Backwards.Backwards f a)
instance forall k (f :: k -> *). GHC.Generics.Generic1 (Control.Applicative.Backwards.Backwards f)
instance GHC.Generics.Generic (Control.Applicative.Lift.Lift f a)
instance GHC.Generics.Generic1 (Control.Applicative.Lift.Lift f)
instance forall k (f :: k -> *) (a :: k). GHC.Generics.Generic (Data.Functor.Reverse.Reverse f a)
instance forall k (f :: k -> *). GHC.Generics.Generic1 (Data.Functor.Reverse.Reverse f)
instance GHC.Generics.Generic (Control.Monad.Trans.Except.ExceptT e m a)
instance GHC.Base.Functor m => GHC.Generics.Generic1 (Control.Monad.Trans.Except.ExceptT e m)
instance GHC.Generics.Generic (Control.Monad.Trans.Accum.AccumT w m a)
instance GHC.Generics.Generic (Control.Monad.Trans.Select.SelectT w m a)


-- | 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.
newtype Options
Options :: Bool -> Options

-- | If <a>True</a>, a default <a>Show1</a> implementation will show hash
--   signs (<tt>#</tt>) 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 <a>liftEq</a> implementation for <a>Generic1</a>
--   instances.
liftEqDefault :: (GEq1 NonV4 (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 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
gliftEq :: GEq1 v t => Eq1Args v a b -> t a -> t b -> Bool

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

-- | A sensible default <a>liftCompare</a> implementation for
--   <a>Generic1</a> instances.
liftCompareDefault :: (GOrd1 NonV4 (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 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
gliftCompare :: GOrd1 v t => Ord1Args v a b -> t a -> t b -> Ordering

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

-- | A sensible default <a>liftReadsPrec</a> implementation for
--   <a>Generic1</a> instances.
liftReadsPrecDefault :: (GRead1 NonV4 (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 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 <a>Lexeme</a>.
class (forall a. Read a => GRead (f a)) => GRead1 v f
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 <a>Lexeme</a>, and for which the <a>ConType</a>
--   has been determined.
class (forall a. Read a => GReadCon (f a)) => GRead1Con v f
gliftReadPrecCon :: GRead1Con v f => ConType -> Read1Args v a -> ReadPrec (f a)

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

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

-- | Like <a>liftShowsPrecDefault</a>, but with configurable
--   <a>Options</a>.
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 <a>Lexeme</a>.
class (forall a. Show a => GShow (f a)) => GShow1 v f
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 <a>Lexeme</a>, and for which the <a>ConType</a>
--   has been determined.
class (forall a. Show a => GShowCon (f a)) => GShow1Con v f
gliftShowsPrecCon :: GShow1Con v f => Options -> ConType -> Show1Args v a -> Int -> f a -> ShowS

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

-- | 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>Lexeme</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>.
showsPrecOptions :: (GShow (Rep1 f a), Generic1 f) => Options -> Int -> f a -> ShowS

-- | Class of generic representation types that can be converted to a
--   <a>Lexeme</a>.
class GShow a
gshowsPrec :: GShow a => Options -> 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 a
FunctorClassesDefault :: f a -> FunctorClassesDefault f a
[getFunctorClassesDefault] :: FunctorClassesDefault f a -> f a

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

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

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

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

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


-- | 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.
newtype Options
Options :: Bool -> Options

-- | If <a>True</a>, a default <a>Show1</a> implementation will show hash
--   signs (<tt>#</tt>) 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 <a>liftEq</a> implementation for <a>Generic1</a>
--   instances.
liftEqDefault :: (GEq1 NonV4 (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 NonV4 (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 NonV4 (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 NonV4 (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 NonV4 (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 NonV4 (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 NonV4 (Rep1 f), Generic1 f) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS

-- | Like <a>liftShowsPrecDefault</a>, but with configurable
--   <a>Options</a>.
liftShowsPrecOptions :: (GShow1 NonV4 (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 a
FunctorClassesDefault :: f a -> FunctorClassesDefault f a
[getFunctorClassesDefault] :: FunctorClassesDefault f a -> f a
