This library provides classes and type aliases that emulate the behavior of
GHC’s constraint tuple syntax. Unlike GHC’s built-in constraint tuples, the
types in this library can be partially applied.
This library exposes four different modules that provide essentially the same
API with slight differences in their implementation:
Data.Tuple.Constraint: A CTupleN class compiles to a dictionary data type
with N fields.
Data.Tuple.Constraint.ClassNewtype: A CTupleN class compiles to a newtype
around the corresponding built-in constraint tuple type with N arguments.
Data.Tuple.Constraint.TypeFamily: A CTupleN type alias is a constraint
tuple type constructor with N arguments obtained by way of a type family.
This will compile to a built-in constraint tuple, but casted with a
type family axiom.
Data.Tuple.Constraint.TypeSynonym: A CTupleN type alias is a constraint
tuple type constructor with N arguments obtained by way of a type synonym.
This will compile directly to a built-in constraint tuple, but because this
requires use of GHC features only present on 8.0 or later, this module does
not export anything on earlier versions of GHC.
Changes
0.1.2 [2019.11.24]
Introduce the Data.Tuple.Constraint.{TypeFamily,TypeSynonym} modules that
provide ways of directly accessing constraint tuple type constructors through
various means of type-level trickery.
Make Data.Tuple.Constraint.ClassNewtype.CTuple0 actually be a class
newtype.
0.1.1 [2019.10.21]
Split generator-script out of the main .cabal file, as it is only used
for development purposes.