-- 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: -- -- -- -- The current implementation integrates with the new GHC Generics. See -- http://www.haskell.org/haskellwiki/GHC.Generics for more -- information. Template Haskell code is provided for supporting older -- GHCs. @package generic-deriving @version 1.11 -- | This module contains Template Haskell code that can be used to -- automatically generate the boilerplate code for the generic deriving -- library. -- -- To use these functions, pass the name of a data type as an argument: -- --
--   {-# LANGUAGE TemplateHaskell #-}
--   
--   data Example a = Example Int Char a
--   $(deriveAll0     ''Example) -- Derives Generic instance
--   $(deriveAll1     ''Example) -- Derives Generic1 instance
--   $(deriveAll0And1 ''Example) -- Derives Generic and Generic1 instances
--   
-- -- On GHC 7.4 or later, this code can also be used with data families. To -- derive for a data family instance, pass the name of one of the -- instance's constructors: -- --
--   {-# LANGUAGE FlexibleInstances, TemplateHaskell, TypeFamilies #-}
--   
--   data family Family a b
--   newtype instance Family Char x = FamilyChar Char
--   data    instance Family Bool x = FamilyTrue | FamilyFalse
--   
--   $(deriveAll0 'FamilyChar) -- instance Generic (Family Char b) where ...
--   $(deriveAll1 'FamilyTrue) -- instance Generic1 (Family Bool) where ...
--   -- Alternatively, one could type $(deriveAll1 'FamilyFalse)
--   
module Generics.Deriving.TH -- | Given the type and the name (as string) for the type to derive, -- generate the Data instance, the Constructor -- instances, and the Selector instances. -- -- On GHC 7.11 and up, this functionality is no longer used in GHC -- generics, so this function generates no declarations. deriveMeta :: Name -> Q [Dec] -- | Given a datatype name, derive a datatype and instance of class -- Datatype. -- -- On GHC 7.11 and up, this functionality is no longer used in GHC -- generics, so this function generates no declarations. deriveData :: Name -> Q [Dec] -- | Given a datatype name, derive datatypes and instances of class -- Constructor. -- -- On GHC 7.11 and up, this functionality is no longer used in GHC -- generics, so this function generates no declarations. deriveConstructors :: Name -> Q [Dec] -- | Given a datatype name, derive datatypes and instances of class -- Selector. -- -- On GHC 7.11 and up, this functionality is no longer used in GHC -- generics, so this function generates no declarations. deriveSelectors :: Name -> Q [Dec] -- | A backwards-compatible synonym for deriveAll0. deriveAll :: Name -> Q [Dec] -- | Given the type and the name (as string) for the type to derive, -- generate the Data instance, the Constructor -- instances, the Selector instances, and the -- Representable0 instance. deriveAll0 :: Name -> Q [Dec] -- | Given the type and the name (as string) for the type to derive, -- generate the Data instance, the Constructor -- instances, the Selector instances, and the -- Representable1 instance. deriveAll1 :: Name -> Q [Dec] -- | Given the type and the name (as string) for the type to derive, -- generate the Data instance, the Constructor -- instances, the Selector instances, the -- Representable0 instance, and the Representable1 -- instance. deriveAll0And1 :: Name -> Q [Dec] -- | Given the type and the name (as string) for the Representable0 type -- synonym to derive, generate the Representable0 instance. deriveRepresentable0 :: Name -> Q [Dec] -- | Given the type and the name (as string) for the Representable1 type -- synonym to derive, generate the Representable1 instance. deriveRepresentable1 :: Name -> Q [Dec] -- | Derive only the Rep0 type synonym. Not needed if -- deriveRepresentable0 is used. deriveRep0 :: Name -> Q [Dec] -- | Derive only the Rep1 type synonym. Not needed if -- deriveRepresentable1 is used. deriveRep1 :: Name -> Q [Dec] -- | Given the names of a generic class, a type to instantiate, a function -- in the class and the default implementation, generates the code for a -- basic generic instance. simplInstance :: Name -> Name -> Name -> Name -> Q [Dec] -- | Generates the full Rep type inline. Since this type can be -- quite large, it is recommended you only use this to define -- Rep, e.g., -- --
--   type Rep (Foo (a :: k) b) = $(makeRep0Inline ''Foo [t| Foo (a :: k) b |])
--   
-- -- You can then simply refer to Rep (Foo a b) elsewhere. -- -- Note that the type passed as an argument to makeRep0Inline must -- match the type argument of Rep exactly, even up to including -- the explicit kind signature on a. This is due to a limitation -- of Template Haskell—without the kind signature, makeRep0Inline -- has no way of figuring out the kind of a, and the generated -- type might be completely wrong as a result! makeRep0Inline :: Name -> Q Type -> Q Type -- | Generates the Rep type synonym constructor (as opposed to -- deriveRep0, which generates the type synonym declaration). -- After splicing it into Haskell source, it expects types as arguments. -- For example: -- --
--   type Rep (Foo a b) = $(makeRep0 ''Foo) a b
--   
-- -- The use of makeRep0 is generally discouraged, as it can -- sometimes be difficult to predict the order in which you are expected -- to pass type variables. As a result, makeRep0Inline is -- recommended instead. However, makeRep0Inline is not usable on -- GHC 7.0, 7.2, or 7.4 due to a GHC bug, so makeRep0 still exists -- for GHC 7.0, 7.2, and 7.4 users. makeRep0 :: Name -> Q Type -- | Generates the Rep type synonym constructor (as opposed to -- deriveRep0, which generates the type synonym declaration) -- applied to its type arguments. Unlike makeRep0, this also takes -- a quoted Type as an argument, e.g., -- --
--   type Rep (Foo (a :: k) b) = $(makeRep0FromType ''Foo [t| Foo (a :: k) b |])
--   
-- -- Note that the type passed as an argument to makeRep0FromType -- must match the type argument of Rep exactly, even up to -- including the explicit kind signature on a. This is due to a -- limitation of Template Haskell—without the kind signature, -- makeRep0FromType has no way of figuring out the kind of -- a, and the generated type might be completely wrong as a -- result! -- -- The use of makeRep0FromType is generally discouraged, since -- makeRep0Inline does exactly the same thing but without having -- to go through an intermediate type synonym, and as a result, -- makeRep0Inline tends to be less buggy. makeRep0FromType :: Name -> Q Type -> Q Type -- | A backwards-compatible synonym for makeFrom0. makeFrom :: Name -> Q Exp -- | Generates a lambda expression which behaves like from. makeFrom0 :: Name -> Q Exp -- | A backwards-compatible synonym for makeTo0. makeTo :: Name -> Q Exp -- | Generates a lambda expression which behaves like to. makeTo0 :: Name -> Q Exp -- | Generates the full Rep1 type inline. Since this type can be -- quite large, it is recommended you only use this to define -- Rep1, e.g., -- --
--   type Rep1 (Foo (a :: k)) = $(makeRep0Inline ''Foo [t| Foo (a :: k) |])
--   
-- -- You can then simply refer to Rep1 (Foo a) elsewhere. -- -- Note that the type passed as an argument to makeRep1Inline must -- match the type argument of Rep1 exactly, even up to including -- the explicit kind signature on a. This is due to a limitation -- of Template Haskell—without the kind signature, makeRep1Inline -- has no way of figuring out the kind of a, and the generated -- type might be completely wrong as a result! makeRep1Inline :: Name -> Q Type -> Q Type -- | Generates the Rep1 type synonym constructor (as opposed to -- deriveRep1, which generates the type synonym declaration). -- After splicing it into Haskell source, it expects types as arguments. -- For example: -- --
--   type Rep1 (Foo a) = $(makeRep1 ''Foo) a
--   
-- -- The use of makeRep1 is generally discouraged, as it can -- sometimes be difficult to predict the order in which you are expected -- to pass type variables. As a result, makeRep1Inline is -- recommended instead. However, makeRep1Inline is not usable on -- GHC 7.0, 7.2, or 7.4 due to a GHC bug, so makeRep1 still exists -- for GHC 7.0, 7.2, and 7.4 users. makeRep1 :: Name -> Q Type -- | Generates the Rep1 type synonym constructor (as opposed to -- deriveRep1, which generates the type synonym declaration) -- applied to its type arguments. Unlike makeRep1, this also takes -- a quoted Type as an argument, e.g., -- --
--   type Rep1 (Foo (a :: k)) = $(makeRep1FromType ''Foo [t| Foo (a :: k) |])
--   
-- -- Note that the type passed as an argument to makeRep1FromType -- must match the type argument of Rep exactly, even up to -- including the explicit kind signature on a. This is due to a -- limitation of Template Haskell—without the kind signature, -- makeRep1FromType has no way of figuring out the kind of -- a, and the generated type might be completely wrong as a -- result! -- -- The use of makeRep1FromType is generally discouraged, since -- makeRep1Inline does exactly the same thing but without having -- to go through an intermediate type synonym, and as a result, -- makeRep1Inline tends to be less buggy. makeRep1FromType :: Name -> Q Type -> Q Type -- | Generates a lambda expression which behaves like from1. makeFrom1 :: Name -> Q Exp -- | Generates a lambda expression which behaves like to1. makeTo1 :: Name -> Q Exp -- | Additional options for configuring derived 'Generic'/'Generic1' -- instances using Template Haskell. data Options Options :: RepOptions -> KindSigOptions -> Options [repOptions] :: Options -> RepOptions [kindSigOptions] :: Options -> KindSigOptions -- | Sensible default Options (defaultRepOptions and -- defaultKindSigOptions). defaultOptions :: Options -- | Configures whether 'Rep'/'Rep1' type instances should be defined -- inline in a derived 'Generic'/'Generic1' instance (InlineRep) -- or defined in terms of a type synonym (TypeSynonymRep). data RepOptions InlineRep :: RepOptions TypeSynonymRep :: RepOptions -- | InlineRep, a sensible default RepOptions. defaultRepOptions :: RepOptions -- | True if explicit kind signatures should be used in derived -- 'Generic'/'Generic1' instances, False otherwise. type KindSigOptions = Bool -- | True, a sensible default KindSigOptions. defaultKindSigOptions :: KindSigOptions -- | Like deriveAll0, but takes an Options argument. deriveAll0Options :: Options -> Name -> Q [Dec] -- | Like deriveAll1, but takes an Options argument. deriveAll1Options :: Options -> Name -> Q [Dec] -- | Like deriveAll0And1, but takes an Options argument. deriveAll0And1Options :: Options -> Name -> Q [Dec] -- | Like deriveRepresentable0, but takes an Options -- argument. deriveRepresentable0Options :: Options -> Name -> Q [Dec] -- | Like deriveRepresentable1, but takes an Options -- argument. deriveRepresentable1Options :: Options -> Name -> Q [Dec] -- | Like deriveRep0, but takes an KindSigOptions argument. deriveRep0Options :: KindSigOptions -> Name -> Q [Dec] -- | Like deriveRep1, but takes an KindSigOptions argument. deriveRep1Options :: KindSigOptions -> Name -> Q [Dec] instance GHC.Show.Show Generics.Deriving.TH.Options instance GHC.Read.Read Generics.Deriving.TH.Options instance GHC.Classes.Ord Generics.Deriving.TH.Options instance GHC.Classes.Eq Generics.Deriving.TH.Options instance GHC.Show.Show Generics.Deriving.TH.RepOptions instance GHC.Read.Read Generics.Deriving.TH.RepOptions instance GHC.Classes.Ord Generics.Deriving.TH.RepOptions instance GHC.Classes.Eq Generics.Deriving.TH.RepOptions module Generics.Deriving.Instances module Generics.Deriving.Base -- | 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.Copoint class GCopoint d where gcopoint = gcopointdefault gcopoint :: GCopoint d => d a -> a gcopoint :: (GCopoint d, Generic1 d, GCopoint' (Rep1 d)) => (d a -> a) gcopointdefault :: (Generic1 d, GCopoint' (Rep1 d)) => d a -> a class GCopoint' t gcopoint' :: GCopoint' t => t a -> Maybe 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.Semigroup.Arg a) instance Generics.Deriving.Copoint.GCopoint Data.Monoid.Dual instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.First instance Generics.Deriving.Copoint.GCopoint Data.Functor.Identity.Identity instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Last instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Max instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.Min instance (Generics.Deriving.Copoint.GCopoint f, Generics.Deriving.Copoint.GCopoint g) => Generics.Deriving.Copoint.GCopoint (Data.Functor.Sum.Sum f g) instance Generics.Deriving.Copoint.GCopoint Data.Monoid.Sum instance Generics.Deriving.Copoint.GCopoint m => Generics.Deriving.Copoint.GCopoint (Control.Applicative.WrappedMonad m) instance Generics.Deriving.Copoint.GCopoint Data.Semigroup.WrappedMonoid module Generics.Deriving.Eq class GEq a where geq = geqdefault geq :: GEq a => a -> a -> Bool geq :: (GEq a, Generic a, GEq' (Rep a)) => a -> a -> Bool geqdefault :: (Generic a, GEq' (Rep a)) => a -> a -> Bool class GEq' f geq' :: GEq' f => f a -> f 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' GHC.Generics.UAddr instance Generics.Deriving.Eq.GEq' GHC.Generics.UChar instance Generics.Deriving.Eq.GEq' GHC.Generics.UDouble instance Generics.Deriving.Eq.GEq' GHC.Generics.UFloat instance Generics.Deriving.Eq.GEq' GHC.Generics.UInt instance Generics.Deriving.Eq.GEq' GHC.Generics.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 (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 a => Generics.Deriving.Eq.GEq (Data.Semigroup.Arg a b) 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 forall k a (b :: k). Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Functor.Const.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.Generics.DecidedStrictness 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 a => Generics.Deriving.Eq.GEq (Data.Semigroup.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 GHC.Unicode.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 a => Generics.Deriving.Eq.GEq (Data.Semigroup.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 a => Generics.Deriving.Eq.GEq (Data.Semigroup.Max a) instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Min a) instance Generics.Deriving.Eq.GEq GHC.Natural.Natural instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.List.NonEmpty.NonEmpty a) instance Generics.Deriving.Eq.GEq a => Generics.Deriving.Eq.GEq (Data.Semigroup.Option a) 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 forall k (s :: k). 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 GHC.Generics.SourceStrictness instance Generics.Deriving.Eq.GEq GHC.Generics.SourceUnpackedness 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 (GHC.Generics.UAddr p) instance Generics.Deriving.Eq.GEq (GHC.Generics.UChar p) instance Generics.Deriving.Eq.GEq (GHC.Generics.UDouble p) instance Generics.Deriving.Eq.GEq (GHC.Generics.UFloat p) instance Generics.Deriving.Eq.GEq (GHC.Generics.UInt p) instance Generics.Deriving.Eq.GEq (GHC.Generics.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 m => Generics.Deriving.Eq.GEq (Data.Semigroup.WrappedMonoid m) 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] genum :: (GEnum a, Generic a, Enum' (Rep 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 Enum' f enum' :: Enum' f => [f a] class (Ord a) => GIx a where range = rangeDefault index = indexDefault inRange = inRangeDefault -- | The list of values in the subrange defined by a bounding pair. range :: GIx a => (a, a) -> [a] -- | The position of a subscript in the subrange. index :: GIx a => (a, a) -> a -> Int -- | Returns True the given subscript lies in the range defined the -- bounding pair. inRange :: GIx a => (a, a) -> a -> Bool -- | The list of values in the subrange defined by a bounding pair. range :: (GIx a, GEq a, Generic a, Enum' (Rep a)) => (a, a) -> [a] -- | The position of a subscript in the subrange. index :: (GIx a, GEq a, Generic a, Enum' (Rep a)) => (a, a) -> a -> Int -- | Returns True the given subscript lies in the range defined the -- bounding pair. inRange :: (GIx a, GEq a, Generic a, Enum' (Rep 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 (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 a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GEnum (Data.Semigroup.Arg a b) 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 forall k a (b :: k). Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Functor.Const.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 a => Generics.Deriving.Enum.GEnum (Data.Semigroup.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 a => Generics.Deriving.Enum.GEnum (Data.Semigroup.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 (Data.Semigroup.Max a) instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (GHC.Base.Maybe a) instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.Min a) instance Generics.Deriving.Enum.GEnum GHC.Natural.Natural instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.List.NonEmpty.NonEmpty a) instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Semigroup.Option a) instance Generics.Deriving.Enum.GEnum GHC.Types.Ordering instance Generics.Deriving.Enum.GEnum p => Generics.Deriving.Enum.GEnum (GHC.Generics.Par1 p) instance Generics.Deriving.Enum.GEnum a => Generics.Deriving.Enum.GEnum (Data.Monoid.Product a) instance forall k (s :: k). 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 m => Generics.Deriving.Enum.GEnum (Data.Semigroup.WrappedMonoid m) 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 (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.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a, Generics.Deriving.Enum.GEnum b) => Generics.Deriving.Enum.GIx (Data.Semigroup.Arg a b) 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.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.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 (Data.Semigroup.Last a) instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Max 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.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Min a) instance Generics.Deriving.Enum.GIx GHC.Natural.Natural instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.List.NonEmpty.NonEmpty a) instance (Generics.Deriving.Eq.GEq a, Generics.Deriving.Enum.GEnum a, Generics.Deriving.Enum.GIx a) => Generics.Deriving.Enum.GIx (Data.Semigroup.Option a) 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 forall k (s :: k). 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 instance (Generics.Deriving.Eq.GEq m, Generics.Deriving.Enum.GEnum m, Generics.Deriving.Enum.GIx m) => Generics.Deriving.Enum.GIx (Data.Semigroup.WrappedMonoid m) 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 gfoldMap :: (GFoldable t, Generic1 t, GFoldable' (Rep1 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 class GFoldable' t gfoldMap' :: (GFoldable' t, Monoid m) => (a -> m) -> t a -> m 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' GHC.Generics.UAddr instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UChar instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UDouble instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UFloat instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UInt instance Generics.Deriving.Foldable.GFoldable' GHC.Generics.UWord instance Generics.Deriving.Foldable.GFoldable ((,) a) instance Generics.Deriving.Foldable.GFoldable [] instance Generics.Deriving.Foldable.GFoldable (Data.Semigroup.Arg a) instance Generics.Deriving.Foldable.GFoldable Data.Complex.Complex instance Generics.Deriving.Foldable.GFoldable (Data.Functor.Const.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.Semigroup.First instance Generics.Deriving.Foldable.GFoldable Data.Functor.Identity.Identity instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Last instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Last instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Max instance Generics.Deriving.Foldable.GFoldable GHC.Base.Maybe instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Min instance Generics.Deriving.Foldable.GFoldable Data.List.NonEmpty.NonEmpty instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.Option instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Product instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable g) => Generics.Deriving.Foldable.GFoldable (Data.Functor.Product.Product f g) instance Generics.Deriving.Foldable.GFoldable Data.Proxy.Proxy instance Generics.Deriving.Foldable.GFoldable Data.Monoid.Sum instance (Generics.Deriving.Foldable.GFoldable f, Generics.Deriving.Foldable.GFoldable g) => Generics.Deriving.Foldable.GFoldable (Data.Functor.Sum.Sum f g) instance Generics.Deriving.Foldable.GFoldable Data.Semigroup.WrappedMonoid instance Generics.Deriving.Foldable.GFoldable Control.Applicative.ZipList module Generics.Deriving.Functor class GFunctor f where gmap = gmapdefault gmap :: GFunctor f => (a -> b) -> f a -> f b gmap :: (GFunctor f, Generic1 f, GFunctor' (Rep1 f)) => (a -> b) -> f a -> f b gmapdefault :: (Generic1 f, GFunctor' (Rep1 f)) => (a -> b) -> f a -> f b class GFunctor' f gmap' :: GFunctor' 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' GHC.Generics.UAddr instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UChar instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UDouble instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UFloat instance Generics.Deriving.Functor.GFunctor' GHC.Generics.UInt instance Generics.Deriving.Functor.GFunctor' GHC.Generics.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.Semigroup.Arg a) instance Generics.Deriving.Functor.GFunctor Data.Complex.Complex instance Generics.Deriving.Functor.GFunctor (Data.Functor.Const.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.Semigroup.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 Data.Semigroup.Last instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Max instance Generics.Deriving.Functor.GFunctor GHC.Base.Maybe instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Min instance Generics.Deriving.Functor.GFunctor Data.List.NonEmpty.NonEmpty instance Generics.Deriving.Functor.GFunctor Data.Semigroup.Option instance Generics.Deriving.Functor.GFunctor Data.Monoid.Product instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor g) => Generics.Deriving.Functor.GFunctor (Data.Functor.Product.Product f g) instance Generics.Deriving.Functor.GFunctor Data.Proxy.Proxy instance Generics.Deriving.Functor.GFunctor Data.Monoid.Sum instance (Generics.Deriving.Functor.GFunctor f, Generics.Deriving.Functor.GFunctor g) => Generics.Deriving.Functor.GFunctor (Data.Functor.Sum.Sum f g) instance Generics.Deriving.Functor.GFunctor Data.Semigroup.WrappedMonoid instance Generics.Deriving.Functor.GFunctor Control.Applicative.ZipList -- | This module provides two main features: -- --
    --
  1. GMonoid, a generic version of the Monoid type class, -- including instances of the types from Data.Monoid
  2. --
  3. Default generic definitions for the Monoid methods -- mempty and mappend
  4. --
-- -- The generic defaults only work for types without alternatives (i.e. -- they have only one constructor). We cannot in general know how to deal -- with different constructors. module Generics.Deriving.Monoid class GMonoid a where gmconcat = foldr gmappend gmempty gmempty = to gmempty' gmappend x y = to (gmappend' (from x) (from y)) -- | Generic mempty gmempty :: GMonoid a => a -- | Generic mappend gmappend :: GMonoid a => a -> a -> a -- | Generic mconcat gmconcat :: GMonoid a => [a] -> a -- | Generic mempty gmempty :: (GMonoid a, Generic a, GMonoid' (Rep a)) => a -- | Generic mappend gmappend :: (GMonoid a, Generic a, GMonoid' (Rep a)) => a -> a -> a gmemptydefault :: (Generic a, GMonoid' (Rep a)) => a gmappenddefault :: (Generic a, GMonoid' (Rep a)) => a -> a -> a class GMonoid' f gmempty' :: GMonoid' f => f x gmappend' :: GMonoid' f => f x -> f x -> f x memptydefault :: (Generic a, Monoid' (Rep a)) => a mappenddefault :: (Generic a, Monoid' (Rep a)) => a -> a -> a class Monoid' f mempty' :: Monoid' f => f x mappend' :: Monoid' f => f x -> f x -> f x 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 forall k a (b :: k). Generics.Deriving.Monoid.GMonoid a => Generics.Deriving.Monoid.GMonoid (Data.Functor.Const.Const a b) instance forall k (s :: k). 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 m => Generics.Deriving.Monoid.GMonoid (Data.Semigroup.WrappedMonoid m) 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) gsconcat (a :| as) = go a as where go b (c : cs) = gsappend b (go c cs) go b [] = b gsappend :: GSemigroup a => a -> a -> a gsappend :: (GSemigroup a, Generic a, GSemigroup' (Rep a)) => a -> a -> a gstimes :: (GSemigroup a, Integral b) => b -> a -> a -- | Only available with base-4.9 or later gsconcat :: GSemigroup a => NonEmpty a -> a gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a infixr 6 `gsappenddefault` class GSemigroup' f gsappend' :: GSemigroup' f => f x -> f x -> f x 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 forall k a (b :: k). Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (Data.Functor.Const.Const a b) instance Generics.Deriving.Semigroup.GSemigroup (Data.Either.Either a b) instance forall k (s :: k). 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 (Data.Semigroup.First a) instance Generics.Deriving.Semigroup.GSemigroup (Data.Semigroup.Last a) instance GHC.Classes.Ord a => Generics.Deriving.Semigroup.GSemigroup (Data.Semigroup.Max a) instance GHC.Classes.Ord a => Generics.Deriving.Semigroup.GSemigroup (Data.Semigroup.Min a) instance Generics.Deriving.Semigroup.GSemigroup (Data.List.NonEmpty.NonEmpty a) instance Generics.Deriving.Semigroup.GSemigroup a => Generics.Deriving.Semigroup.GSemigroup (Data.Semigroup.Option a) instance Generics.Deriving.Monoid.GMonoid m => Generics.Deriving.Semigroup.GSemigroup (Data.Semigroup.WrappedMonoid m) 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.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 gshowsPrec :: (GShow a, Generic a, GShow' (Rep a)) => Int -> a -> ShowS gshowsPrecdefault :: (Generic a, GShow' (Rep a)) => Int -> a -> ShowS class GShow' f where isNullary = error "generic show (isNullary): unnecessary case" gshowsPrec' :: GShow' f => Type -> Int -> f a -> ShowS isNullary :: GShow' f => f a -> Bool 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' GHC.Generics.UChar instance Generics.Deriving.Show.GShow' GHC.Generics.UDouble instance Generics.Deriving.Show.GShow' GHC.Generics.UFloat instance Generics.Deriving.Show.GShow' GHC.Generics.UInt instance Generics.Deriving.Show.GShow' GHC.Generics.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 a, Generics.Deriving.Show.GShow b) => Generics.Deriving.Show.GShow (Data.Semigroup.Arg a b) 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 (Data.Functor.Const.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 a => Generics.Deriving.Show.GShow (Data.Semigroup.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 GHC.Unicode.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 a => Generics.Deriving.Show.GShow (Data.Semigroup.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 (Data.Semigroup.Max a) instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (GHC.Base.Maybe a) instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.Min a) instance Generics.Deriving.Show.GShow GHC.Natural.Natural instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.List.NonEmpty.NonEmpty a) instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Data.Semigroup.Option a) 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 (GHC.Generics.UChar p) instance Generics.Deriving.Show.GShow (GHC.Generics.UDouble p) instance Generics.Deriving.Show.GShow (GHC.Generics.UFloat p) instance Generics.Deriving.Show.GShow (GHC.Generics.UInt p) instance Generics.Deriving.Show.GShow (GHC.Generics.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 m => Generics.Deriving.Show.GShow (Data.Semigroup.WrappedMonoid m) instance Generics.Deriving.Show.GShow a => Generics.Deriving.Show.GShow (Control.Applicative.ZipList a) 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) gtraverse :: (GTraversable t, Generic1 t, GTraversable' (Rep1 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) class GTraversable' t gtraverse' :: (GTraversable' 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' GHC.Generics.UAddr instance Generics.Deriving.Traversable.GTraversable' GHC.Generics.UChar instance Generics.Deriving.Traversable.GTraversable' GHC.Generics.UDouble instance Generics.Deriving.Traversable.GTraversable' GHC.Generics.UFloat instance Generics.Deriving.Traversable.GTraversable' GHC.Generics.UInt instance Generics.Deriving.Traversable.GTraversable' GHC.Generics.UWord instance Generics.Deriving.Traversable.GTraversable ((,) a) instance Generics.Deriving.Traversable.GTraversable [] instance Generics.Deriving.Traversable.GTraversable (Data.Semigroup.Arg a) instance Generics.Deriving.Traversable.GTraversable Data.Complex.Complex instance Generics.Deriving.Traversable.GTraversable (Data.Functor.Const.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.Semigroup.First instance Generics.Deriving.Traversable.GTraversable Data.Functor.Identity.Identity instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Last instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Last instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Max instance Generics.Deriving.Traversable.GTraversable GHC.Base.Maybe instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Min instance Generics.Deriving.Traversable.GTraversable Data.List.NonEmpty.NonEmpty instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.Option instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Product instance (Generics.Deriving.Traversable.GTraversable f, Generics.Deriving.Traversable.GTraversable g) => Generics.Deriving.Traversable.GTraversable (Data.Functor.Product.Product f g) instance Generics.Deriving.Traversable.GTraversable Data.Proxy.Proxy instance Generics.Deriving.Traversable.GTraversable Data.Monoid.Sum instance (Generics.Deriving.Traversable.GTraversable f, Generics.Deriving.Traversable.GTraversable g) => Generics.Deriving.Traversable.GTraversable (Data.Functor.Sum.Sum f g) instance Generics.Deriving.Traversable.GTraversable Data.Semigroup.WrappedMonoid instance Generics.Deriving.Traversable.GTraversable Control.Applicative.ZipList -- | 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] children :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => a -> [a] context :: Uniplate a => a -> [a] -> a context :: (Uniplate a, Generic a, Context' (Rep a) a) => a -> [a] -> a descend :: Uniplate a => (a -> a) -> a -> a descend :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a descendM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a descendM :: (Uniplate a, Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a transform :: Uniplate a => (a -> a) -> a -> a transform :: (Uniplate a, Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a transformM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a transformM :: (Uniplate a, Generic a, Uniplate' (Rep a) 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 class Uniplate' f b children' :: Uniplate' f b => f a -> [b] descend' :: Uniplate' f b => (b -> b) -> f a -> f a descendM' :: (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f a) transform' :: Uniplate' f b => (b -> b) -> f a -> f a transformM' :: (Uniplate' f b, Monad m) => (b -> m b) -> f a -> m (f 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