constraint-tuples

Partially applicable constraint tuples

https://github.com/RyanGlScott/constraint-tuples

Version on this page:0.1.2
LTS Haskell 23.0:0.2
Stackage Nightly 2024-12-09:0.2
Latest on Hackage:0.2

See all snapshots constraint-tuples appears in

BSD-3-Clause licensed by Ryan Scott
Maintained by [email protected]
This version can be pinned in stack with:constraint-tuples-0.1.2@sha256:64a92ef5e4ee2bb53edfdc8020a4c788db3607cc83c6ff53776c630363889c93,3407
Depends on 1 package(full list with versions):

constraint-tuples

Hackage Hackage Dependencies Haskell Programming Language BSD3 License Build

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.
  • Minor Haddock fixes.

0.1 [2019.10.14]

  • First version.