homepage: http://github.com/ryantrinkle/superconstraints
changelog-type: ''
hash: 35bd0157733fccd066db59d04bb59d947e15e5123ddc274419a30c5a1b45ec2d
test-bench-deps: {}
maintainer: Ryan Trinkle <ryan.trinkle@gmail.com
synopsis: Access an instance's constraints
changelog: ''
basic-deps:
  base: ! '>=4.9.1 && <4.10'
  constraints: ! '>=0.9.1 && <0.10'
  tagged: ! '>=0.8.5 && <0.9'
  containers: ! '>=0.5.7.1 && <0.6'
  mtl: ! '>=2.2.1 && <2.3'
  haskell-src-meta: ! '>=0.7.0.1 && <0.8'
  template-haskell: ! '>=2.11.1 && <2.12'
  type-eq: ! '>=0.5 && <0.6'
all-versions:
- '0.0.1'
author: Ryan Trinkle
latest: '0.0.1'
description-type: markdown
description: ! "## superconstraints\n\nA way of inferring instance constraints given
  an instance.\n\nSuppose you have a class like this:\n\n```haskell\nclass C a\n\ninstance
  C a => C [a]\n```\n\nNormally, given `C [a]`, you cannot obtain `C a`; however,
  superconstraints allows you to add that capability:\n\n```haskell\nclass HasSuper
  (C a) => C a\n\ninstance C a => C [a]\nmakeSuper \"C [a]\"\n```\n\nThen, you can
  retrieve the superconstraint by doing:\n\n```haskell\ncase super (Proxy :: Proxy
  (C [a])) of\n  Dict -> ...\n```\n\nThe superconstraint dictionary will include all
  of the constraints required by the instance.\n\n### Future Improvements\n\n* Replace
  the crazy string argument to `makeSuper` with something more sensible\n"
license-name: BSD3

Update from Hackage at 2017-05-26T21:20:36Z
Update from Hackage at 2017-05-26T21:20:36Z
