deriving-compat
Backports of GHC deriving extensions
https://github.com/haskell-compat/deriving-compat
| Version on this page: | 0.5.2@rev:1 |
| LTS Haskell 24.24: | 0.6.7@rev:1 |
| Stackage Nightly 2025-12-15: | 0.6.7@rev:1 |
| Latest on Hackage: | 0.6.7@rev:1 |
deriving-compat-0.5.2@sha256:afebe3d28f68f53bb52ea49020814156038453c4d38d1bf2aece247ed816c7e8,7963Module documentation for 0.5.2
- Data
- Data.Bounded
- Data.Deriving
- Data.Enum
- Data.Eq
- Data.Foldable
- Data.Functor
- Data.Ix
- Data.Ord
- Data.Traversable
- Text
- Text.Read
- Text.Show
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,Eq1, andEq2 - Deriving
Ord,Ord1, andOrd2 - Deriving
Read,Read1, andRead2 - Deriving
Show,Show1, andShow2 DeriveFoldableDeriveFunctorDeriveTraversableGeneralizedNewtypeDeriving(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.
Note that some recent GHC typeclasses/extensions are not covered by this package:
DeriveDataTypeableDeriveGeneric, which was introducted in GHC 7.2 for derivingGenericinstances, and modified in GHC 7.6 to allow derivation ofGeneric1instances. UseGenerics.Deriving.THfromgeneric-derivingto deriveGeneric(1)using Template Haskell.DeriveLift, which was introduced in GHC 8.0 for derivingLiftinstances. UseLanguage.Haskell.TH.Liftfromth-liftto deriveLiftusing Template Haskell.- The
Bifunctortypeclass, which was introduced in GHC 7.10, as well as theBifoldableandBitraversabletypeclasses, which were introduced in GHC 8.2. UseData.Bifunctor.THfrombifunctorsto derive these typeclasses using Template Haskell.
Changes
0.5.2 [2018.09.13]
- Fix a bug (on GHC 8.7 and above) in which
deriveGND/deriveViawould generate ill-scoped code.
0.5.1 [2018.07.11]
- Have
deriveGND/deriveViathrow an error if an incorrect number of arguments are supplied to the type class.
0.5 [2018.07.01]
-
Backport the changes to
GeneralizedNewtypeDerivingandDerivingViacode generation from Trac #15290.As a result, code generated by
deriveGNDorderiveVianow requires theInstanceSigsandScopedTypeVariableslanguage extensions. On the other hand, the generated code no longer requires theImpredicativeTypesextension (unless any class methods use higher-rank types). -
Allow building with
containers-0.6andtemplate-haskell-2.14.
0.4.3 [2018.06.16]
- Fix a bug that caused debug-enabled GHC builds to panic when generating code from this library (see Trac #15270). The fix only affects the library’s internals, so no changes are user-facing.
0.4.2 [2018.05.14]
- Backport the fixes for GHC Trac
#14364
and
#14918,
which significantly improve the compliation times of derived
Readinstances.
0.4.1 [2018.02.04]
- Add
Data.Deriving.Via, which allows emulating the behavior of theGeneralizedNewtypeDerivingandDerivingViaextensions. - Test suite fixes for GHC 8.4.
0.4 [2017.12.07]
- Incorporate changes from the
EmptyDataDerivingproposal (which is in GHC as of 8.4):- For derived
EqandOrdinstances for empty data types, simply returnTrueandEQ, respectively, without inspecting the arguments. - For derived
Readinstances for empty data types, simply returnpfail(withoutparens). - For derived
Showinstances for empty data types, inspect the argument (instead oferroring). In addition, addshowEmptyCaseBehaviortoShowOptions, which configures whether derived instances for empty data types should use theEmptyCaseextension (this is disabled by default). - For derived
FunctorandTraversableinstances for empty data types, makefmapandtraversestrict in its argument. - For derived
Foldableinstances, do not error on empty data types. Instead, simply return the folded state (forfoldr) ormempty(forfoldMap), without inspecting the arguments. - Add
FFTOptions(Functor/Foldable/Traversableoptions) toData.Functor.Deriving, along with variants of existing functions that takeFFTOptionsas an argument. For now, the only configurable option is whether derived instances for empty data types should use theEmptyCaseextension (this is disabled by default).
- For derived
- Backport the fix to #13328. That is, when deriving
FunctororTraversableinstances for data types where the last type variable is at phantom role, generatedfmap/traverseimplementations now usecoercefor efficiency. - Rename
emptyCaseBehaviorfromData.Functor.DerivingtofftEmptyCaseBehavior.
0.3.6 [2017.04.10]
- Make
deriveTraversableuseliftA2in derived implementations oftraversewhen possible, now thatliftA2is a class method ofApplicative(as of GHC 8.2) - Make
deriveShowuseshowCommaSpace, a change introduced in GHC 8.2
0.3.5 [2016.12.12]
- Fix bug in which derived
Ordinstances for datatypes with many constructors would fail to typecheck
0.3.4 [2016.10.20]
- Fix bug in which infix record selectors weren’t shown with parentheses in derived
Showinstances - Fix bug in which record selectors weren’t parsed correctly in derived
Readinstances
0.3.3 [2016.09.11]
- Add
Data.Bounded.Deriving, which allows derivingBoundedwith TH. - Add
Data.Enum.Deriving, which allows derivingEnumwith TH. - Add
Data.Ix.Deriving, which allows derivingIxwith TH. - Fix bug in which derived
Showinstance would parenthesize the output too eagerly
0.3.2
- Incorporate a fix to GHC Trac #10858, which will be introduced in GHC 8.2
- Fix bug in which derived
Ordinstances accidentally swapped their less-than(-or-equal-to) and greater-than(-or-equal-to) methods - Fix GHC HEAD build
0.3.1
- Allow deriving
FunctorandFoldableinstances for datatypes containing unboxed tuples - Microoptimization in derived instances of higher-order versions of
Eq,Ord,Read, andShow
0.3
- Added
Data.Eq.Deriving, which allows derivingEq,Eq1, andEq2with TH. - Added
Data.Ord.Deriving, which allows derivingOrd,Ord1, andOrd2with TH. - Added
Data.Read.Deriving, which allows derivingRead,Read1, andEq2with TH. - Renamed
Text.Show.Deriving.OptionstoShowOptionsso as to disambiguate it from the options datatypes in otherderiving-compatmodules.
0.2.2
- Fixed a bug in
Text.Show.Deriving’s treatment of unlifted types
0.2.1
- Added
Text.Show.Deriving, which allows derivingShow,Show1, andShow2with TH.
0.2
- Added support for GHC 8.0
- Added
Data.Functor.DerivingandData.Traversable.Deriving, which allow derivingFunctorandTraversablewith TH. - Added
Data.Deriving, which reexports all other modules
0.1
- Initial commit