Package0.6.8Compatibility
deriving-compat
Backports of GHC deriving extensions
- Version0.6.8
- CategoryCompatibility
- LicenceBSD-3-Clause
- AuthorRyan Scott
- MaintainerRyan Scott <ryan.gl.scott@gmail.com>
- Homepagegithub.com/haskell-compat/deriving-compat
- Pinned byhackage deriving-compat 0.6.8
- Sourcehackage.haskell.org/package/deriving-compat-0.6.8
Modules
22 modules- Data.Bounded.Deriving3Exports functions to mechanically derive Bounded instances.
- Data.Deriving0This module reexports all of the functionality of the other modules in this library
- Data.Deriving.Via3On template-haskell-2.12 or later (i.e., GHC 8.2 or later), this module
- Data.Enum.Deriving7Exports functions to mechanically derive Enum instances.
- Data.Eq.Deriving9Exports functions to mechanically derive Eq, Eq1, and Eq2 instances.
- Data.Foldable.Deriving14Exports functions to mechanically derive Foldable instances in a way that mimics
- Data.Functor.Deriving8Exports functions to mechanically derive Functor instances. For more info on how deriving Functor works, see
- Data.Ix.Deriving4Exports functions to mechanically derive Ix instances.
- Data.Ord.Deriving14Exports functions to mechanically derive Ord, Ord1, and Ord2 instances.
- Data.Traversable.Deriving12Exports functions to mechanically derive Traversable instances in a way that mimics
- Text.Read.Deriving18Exports functions to mechanically derive Read, Read1, and Read2 instances.
- Text.Show.Deriving27Exports functions to mechanically derive Show, Show1, and Show2 instances.
Internal modules · 10
- Data.Bounded.Deriving.Internal3Exports functions to mechanically derive Bounded instances. Note: this is an internal module, and as such, the API presented here is not
- Data.Deriving.Internal365Template Haskell-related utilities. Note: this is an internal module, and as such, the API presented here is not
- Data.Deriving.Via.Internal11On template-haskell-2.12 or later (i.e., GHC 8.2 or later), this module
- Data.Enum.Deriving.Internal7Exports functions to mechanically derive Enum instances. Note: this is an internal module, and as such, the API presented here is not
- Data.Eq.Deriving.Internal9Exports functions to mechanically derive Eq, Eq1, and Eq2 instances. Note: this is an internal module, and as such, the API presented her…
- Data.Functor.Deriving.Internal30The machinery needed to derive Foldable, Functor, and Traversable instances. For more info on how deriving Functor works, see
- Data.Ix.Deriving.Internal4Exports functions to mechanically derive Ix instances. Note: this is an internal module, and as such, the API presented here is not
- Data.Ord.Deriving.Internal14Exports functions to mechanically derive Ord, Ord1, and Ord2 instances. Note: this is an internal module, and as such, the API presented …
- Text.Read.Deriving.Internal18Exports functions to mechanically derive Read, Read1, and Read2 instances. Note: this is an internal module, and as such, the API present…
- Text.Show.Deriving.Internal27Exports functions to mechanically derive Show, Show1, and Show2 instances. Note: this is an internal module, and as such, the API present…
Description
deriving-compat provides Template Haskell functions that mimic deriving extensions that were introduced or modified in recent versions of GHC. Currently, the following typeclasses/extensions are covered:
Deriving Bounded Deriving Enum Deriving Ix Deriving Eq Deriving Ord Deriving Read Deriving Show DeriveFoldable DeriveFunctor DeriveTraversable GeneralizedNewtypeDeriving (with GHC 8.2 or later) DerivingVia (with GHC 8.2 or later)
See the Data.Deriving module for a full list of backported changes.
In addition, deriving-compat also provides some additional deriving functionality that has not yet been merged into upstream GHC. Aside from the GHC deriving extensions mentioned above, deriving-compat also permits deriving instances of classes in the Data.Functor.Classes module, covering the Eq1, Eq2, Ord1, Ord2, Read1, Read2, Show1, and Show2 classes. This extra functionality is outside of the main scope of deriving-compat, as it does not backport extensions that exist in today's GHC. Nevertheless, the underlying Template Haskell machinery needed to derive Eq and friends extends very naturally to Eq1 and friends, so this extra functionality is included in deriving-compat as a convenience.
Note that some recent GHC typeclasses/extensions are not covered by this package:
DeriveDataTypeable DeriveGeneric, which was introducted in GHC 7.2 for deriving Generic instances, and modified in GHC 7.6 to allow derivation of Generic1 instances. Use Generics.Deriving.TH from generic-deriving to derive Generic(1) using Template Haskell. DeriveLift, which was introduced in GHC 8.0 for deriving Lift instances. Use Language.Haskell.TH.Lift from th-lift to derive Lift using Template Haskell. The Bifunctor typeclass, which was introduced in GHC 7.10, as well as the Bifoldable and Bitraversable typeclasses, which were introduced in GHC 8.2. Use Data.Bifunctor.TH from bifunctors to derive these typeclasses using Template Haskell.
Depends on
5 packages- base-4.22.0.0with GHC
- containers-0.8with GHC
- ghc-boot-th-9.14.1with GHC
- template-haskell-2.24.0.0with GHC
- th-abstraction-0.7.2.0in this set