Safe Haskell | Safe-Infered |
---|

This module contains a type-level combinator for combining constraint constructors.

This is useful because you can't otherwise write an

type or `Exists`

instance referencing more than one at the same time.
`Existential`

# Documentation

class (c a, d a) => (c :&: d) a Source

Combine two constraint constructors of kind `χ -> `

, where `Constraint`

`χ`

is any kind.

This is the same as

type (c :&: d) a = (c a, d a)

except that it can be partially applied.

f :: ((Eq :&: Enum :&: Bounded) a) => a -> Bool

is equivalent to

f :: (Eq a, Enum a, Bounded a) => a -> Bool

(c a, d a) => (k :&: c) d a |