-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Reified constraints
--   
--   Reified constraints
@package constraint
@version 0.1.1.1

module Data.Constraint

-- | The kind of constraints, like <tt>Show a</tt>
data Constraint
data Dict a
[Dict] :: a => Dict a
withDict :: Dict a -> (a => b) -> b
newtype a (:-) b
Sub :: (a => Dict b) -> (:-) a b
(\\) :: (b => c) -> (a :- b) -> (a => c)
unmapDict :: (Dict a -> Dict b) -> a :- b
instance GHC.Classes.Eq (Data.Constraint.Dict a)
instance GHC.Classes.Ord (Data.Constraint.Dict a)
instance a => GHC.Read.Read (Data.Constraint.Dict a)
instance GHC.Show.Show (Data.Constraint.Dict a)
instance a => GHC.Enum.Bounded (Data.Constraint.Dict a)
instance GHC.Classes.Eq (a Data.Constraint.:- b)
instance GHC.Classes.Ord (a Data.Constraint.:- b)
instance GHC.Show.Show (a Data.Constraint.:- b)
instance Control.Category.Category (Data.Constraint.:-)
instance Control.Categorical.Functor.Functor (Data.Constraint.:-) (->) Data.Constraint.Dict
instance a => GHC.Enum.Enum (Data.Constraint.Dict a)
instance GHC.Base.Semigroup (Data.Constraint.Dict a)
instance a => GHC.Base.Monoid (Data.Constraint.Dict a)

module Data.Constraint.Compose
class c (f a) => Compose (c :: β -> Constraint) (f :: α -> β) (a :: α)
decompose :: Compose c f a :- c (f a)
instance forall α β (c :: β -> GHC.Types.Constraint) (f :: α -> β) (a :: α). c (f a) => Data.Constraint.Compose.Compose c f a

module Data.Constraint.Product
class (a, b) => Product a b
instance (a, b) => Data.Constraint.Product.Product a b
