constraints-0.8: Constraint manipulation

Copyright(C) 2011-2015 Edward Kmett, (C) 2015 Ørjan Johansen
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Constraint.Forall

Description

This module uses a trick to provide quantification over constraints.

Synopsis

Documentation

type family Forall (p :: k -> Constraint) :: Constraint Source #

A representation of the quantified constraint forall a. p a.

Instances

type Forall k p Source # 
type Forall k p

inst :: forall p a. Forall p :- p a Source #

Instantiate a quantified Forall p constraint at type a.

type family ForallF (p :: k2 -> Constraint) (f :: k1 -> k2) :: Constraint Source #

A representation of the quantified constraint forall a. p (f a).

Instances

type ForallF k1 k2 p f Source # 
type ForallF k1 k2 p f

instF :: forall p f a. ForallF p f :- p (f a) Source #

Instantiate a quantified ForallF p f constraint at type a.

type Forall1 p = Forall p Source #

inst1 :: forall p f. Forall p :- p f Source #

Instantiate a quantified constraint on kind * -> *. This is now redundant since inst became polykinded.

type family ForallT (p :: k3 -> Constraint) (t :: k1 -> k2 -> k3) :: Constraint Source #

A representation of the quantified constraint forall f a. p (t f a).

Instances

type ForallT k2 k1 k3 p t Source # 
type ForallT k2 k1 k3 p t

instT :: forall p t f a. ForallT p t :- p (t f a) Source #

Instantiate a quantified ForallT p t constraint at types f and a.