About

Metadata

  • Last updated , by RyanTrinkle
  • License BSD-3-Clause
  • Maintained by: Ryan Trinkle <ryan.trinkle@gmail.com>

  • Lottery factor: 0

Links

Installation

Readme

superconstraints

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