constraints-deriving-1.0.1.1: Manipulating constraints and deriving class instances programmatically.

Copyright(c) 2019 Artem Chirkin
LicenseBSD3
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Constraint.Bare

Description

Extract a Constraint from a Dict to manipulate it as a plain value. It is supposed to be used in compiler plugins -- to move around instances of type classes.

Synopsis

Documentation

data BareConstraint :: Constraint -> Type Source #

An unsafeCoerced pointer to a Constraint, such as a class function dictionary.

pattern DictValue :: BareConstraint c -> Dict c Source #

Extract the constraint inside the Dict GADT as if it was an ordinary value of kind Type.

It exploits the feature of the GHC core language -- representing constraints as ordinary type arguments of a function. Thus, I unsafeCoerce between a function with one argument and a function with no arguments and one constraint.

This pattern has never been tested with multiple constraints.