The constrained-normal package

[ Tags: bsd3, control, library ] [ Propose Tags ]

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.

The functionality exposed by this library is also used internally by the Set-Monad and RMonad packages.


Versions 1.0.0, 1.0.1, 1.0.2
Dependencies base (>=4.5 && <5) [details]
License BSD3
Copyright (c) 2013 The University of Kansas
Author Neil Sculthorpe
Maintainer Neil Sculthorpe <>
Category Control
Home page
Uploaded Mon Jun 9 14:46:00 UTC 2014 by NeilSculthorpe
Updated Wed Feb 28 09:28:44 UTC 2018 by NeilSculthorpe to revision 1   [What is this?]
Distributions NixOS:1.0.2
Downloads 1330 total (48 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]
Hackage Matrix CI




Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees