{-|
Module:      Data.Enum.Deriving
Copyright:   (C) 2015-2017 Ryan Scott
License:     BSD-style (see the file LICENSE)
Maintainer:  Ryan Scott
Portability: Template Haskell

Exports functions to mechanically derive 'Enum' instances.
-}
module Data.Enum.Deriving (
      -- * 'Enum'

      deriveEnum
    , makeSucc
    , makePred
    , makeToEnum
    , makeFromEnum
    , makeEnumFrom
    , makeEnumFromThen
      -- * 'deriveEnum' limitations

      -- $constraints

    ) where

import Data.Enum.Deriving.Internal

{- $constraints

Be aware of the following potential gotchas:

* Type variables of kind @*@ are assumed to have 'Enum' constraints.
  If this is not desirable, use 'makeToEnum' or one of its cousins.

* Generated 'Enum' instances for poly-kinded data family instances are likely
  to require the use of the @TypeInType@ extension on GHC 8.0, 8.2, or 8.4.
-}