Copyright | (C) 2015-2017 Ryan Scott |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Ryan Scott |
Portability | Template Haskell |
Safe Haskell | None |
Language | Haskell2010 |
Exports functions to mechanically derive Ix
instances.
Ix
deriveIx :: Name -> Q [Dec] Source #
Generates a Ix
instance declaration for the given data type or data
family instance.
makeRange :: Name -> Q Exp Source #
Generates a lambda expression which behaves like range
(without
requiring an Ix
instance).
makeUnsafeIndex :: Name -> Q Exp Source #
Generates a lambda expression which behaves like unsafeIndex
(without
requiring an Ix
instance).
makeInRange :: Name -> Q Exp Source #
Generates a lambda expression which behaves like inRange
(without
requiring an Ix
instance).
deriveIx
limitations
Be aware of the following potential gotchas:
- Type variables of kind
*
are assumed to haveIx
constraints. If this is not desirable, usemakeRange
or one of its cousins.