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

, and `Eq2`

- Deriving
`Ord`

, `Ord1`

, and `Ord2`

- Deriving
`Read`

, `Read1`

, and `Read2`

- Deriving
`Show`

, `Show1`

, and `Show2`

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

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.