This package provides a consistent interface to a subset of Template Haskell.
Currently the package provides a consistent view of the reified declaration information about datatypes, newtypes, and data family instances. These interfaces abstract away the differences in the normal and GADT syntax used to define these types.
Please contact me via GitHub or on the #haskell IRC channel on irc.freenode.net
Revision history for th-abstraction
0.2.8.0 – 2018-06-29
- GADT reification is now much more robust with respect to
A bug in which universally quantified kind variables were mistakenly flagged as existential has been fixed.
A bug in which the kinds of existentially quantified type variables were not substituted properly has been fixed.
More kind equalities are detected than before. For example, in the following data type:
data T (a :: k) where MkT :: forall (a :: Bool). T a
We now catch the
k ~ Boolequality.
resolveTypeSynonymsso that failing to reify a type constructor name so longer results in an error. Among other benefits, this makes it possible to pass data types with GADT syntax to
0.2.7.0 – 2018-06-17
- Fix bug in which data family instances with duplicate occurrences of type variables in the left-hand side would have redundant equality constraints in their contexts.
0.2.6.0 – 2017-09-04
- Fix bug in which
freeVariableswould ignore type variables in the kinds of type variable binders.
0.2.4.0 – 2017-07-31
- Fix bug that caused GADT equality constraints to be incorrect in some cases.
Strictness(which were unexported by accident).
0.2.3.0 – 2017-06-26
reifyConstructor, which allows reification of
ConstructorInfofrom a constructor name, and
lookupByConstructorName, which allows directly looking up a
DatatypeInfovalue for a given constructor
reifyDatatypeto be able to look up
Nameof a record selector for one of its constructors. Also add
reifyRecordfor reification of of
ConstructorInfofrom a record name, and
lookupByRecordName, which allows directly looking up a
DatatypeInfovalue for a given record
- Fix bug that caused
th-abstractionto fail on GHC 7.0 and 7.2 when passing a vanilla constructor name to
normalizeConmore robust with respect to data family instances on GHC 7.6 and 7.8
0.2.2.0 – 2017-06-10
freeVariableson lists not not produce duplicates.
0.2.1.0 – 2017-06-09
- Add sensible reify defaults and error messages when we can’t backport fixes to old GHC Template Haskell output due to hand-written Decs being processed.
0.2.0.0 – 2017-06-03
- Infer more kind signatures when missing on old GHCs
- Added parameter to
- Support GHC back to 7.0.4
0.1.3.0 – 2017-05-27
resolveInfixTwhich uses reified fixity information to resolve
- Fixed data-instance GADTs
0.1.2.1 – 2017-05-21
- Add eta reduction fixes to GHC 7.6
0.1.2.0 – 2017-05-21
- Added workaround for GHC 7.8 data instance eta reduction bug
- Added kind signatures to datatypeVars
0.1.1.0 – 2017-05-20
- Better matching of constraints generated for GADTs across GHC versions
- Support for giving value constructors to reifyDatatype. This enables data families to be reified easily.
0.1.0.0 – 2017-04-26
- First version.