superconstraints: Access an instance's constraints

[ bsd3, constraints, library ] [ Propose Tags ]
Versions 0.0.1, 0.0.2
Dependencies base (>=4.9.1 && <4.10), constraints (>=0.9.1 && <0.10), containers (>= && <0.6), haskell‑src‑meta (>= && <0.8), mtl (>=2.2.1 && <2.3), tagged (>=0.8.5 && <0.9), template‑haskell (>=2.11.1 && <2.12), type‑eq (==0.5.*) [details]
License BSD-3-Clause
Copyright Copyright (C) 2013 Ryan Trinkle
Author Ryan Trinkle
Maintainer Ryan Trinkle <>
Category Constraints
Home page
Bug tracker
Source repo head: git clone
Uploaded by RyanTrinkle at Sun May 28 21:08:00 UTC 2017
Distributions NixOS:0.0.2
Downloads 360 total (11 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2017-05-28 [all 3 reports]
Hackage Matrix CI

Constraint manipulation

[Skip to Readme]


  • Data
    • Constraint
      • Data.Constraint.Super


Maintainer's Corner

For package maintainers and hackage trustees

Readme for superconstraints-0.0.2

[back to package description]


A way of inferring instance constraints given an instance.

Suppose you have a class like this:

class C a

instance C a => C [a]

Normally, given C [a], you cannot obtain C a; however, superconstraints allows you to add that capability:

class HasSuper (C a) => C a

instance C a => C [a]
makeSuper "C [a]"

Then, you can retrieve the superconstraint by doing:

case super (Proxy :: Proxy (C [a])) of
  Dict -> ...

The superconstraint dictionary will include all of the constraints required by the instance.

Future Improvements

  • Replace the crazy string argument to makeSuper with something more sensible