Normalised Deep Embeddings for Constrained Type-Class Instances
|Latest on Hackage:||1.0.2@rev:1|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
The package provides normal forms for monads and related structures, similarly to the Operational package. The difference is that we parameterise the normal forms on a constraint, and apply that constraint to all existential types within the normal form. This allows monad (and other) instances to be generated for underlying types that require constraints on their return-like and bind-like operations, e.g. Set.
This is documented in the following paper:
The Constrained-Monad Problem. Neil Sculthorpe and Jan Bracker and George Giorgidze and Andy Gill. International Conference on Functional Programming, pages 287-298. ACM, 2013. http://dx.doi.org/10.1145/2500365.2500602
The functionality exposed by this library is also used internally by the Set-Monad and RMonad packages.