{-|
Module: Data.Ix.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 'Ix' instances.
-}
module Data.Ix.Deriving (
-- * 'Ix'
deriveIx
, makeRange
, makeUnsafeIndex
, makeInRange
-- * 'deriveIx' limitations
-- $constraints
) where
import Data.Ix.Deriving.Internal
{- $constraints
Be aware of the following potential gotchas:
* Type variables of kind @*@ are assumed to have 'Ix' constraints.
If this is not desirable, use 'makeRange' or one of its cousins.
* Generated 'Ix' 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.
-}