free-functors-0.8.3: Free functors, adjoint to functors that forget class constraints.

LicenseBSD-style (see the file LICENSE)
Maintainersjoerd@w3future.com
Stabilityexperimental
Portabilitynon-portable
Safe HaskellSafe
LanguageHaskell2010

Data.Constraint.Class1

Description

 

Synopsis

Documentation

scls1 :: forall b h x. SuperClass1 b h => h x :- b x Source #

Proof that b is a superclass of h, i.e. h x entails b x.

class HasSuperClasses (c :: k -> Constraint) where Source #

Associated Types

type SuperClasses c :: [k -> Constraint] Source #

Instances

HasSuperClasses * Bounded Source # 
HasSuperClasses * Enum Source # 
HasSuperClasses * Eq Source # 
HasSuperClasses * Floating Source # 
HasSuperClasses * Fractional Source # 
HasSuperClasses * Integral Source # 
HasSuperClasses * Num Source # 
HasSuperClasses * Ord Source # 
HasSuperClasses * Read Source # 
HasSuperClasses * Real Source # 
HasSuperClasses * RealFloat Source # 
HasSuperClasses * RealFrac Source # 
HasSuperClasses * Show Source # 
HasSuperClasses * Semigroup Source # 
HasSuperClasses * Monoid Source # 
HasSuperClasses (* -> * -> *) Bifunctor Source # 
HasSuperClasses (* -> * -> *) Arrow Source # 
HasSuperClasses (* -> * -> *) ArrowZero Source # 
HasSuperClasses (* -> * -> *) ArrowPlus Source # 
HasSuperClasses (* -> * -> *) ArrowChoice Source # 
HasSuperClasses (* -> * -> *) ArrowApply Source # 
HasSuperClasses (* -> * -> *) ArrowLoop Source # 
HasSuperClasses (* -> * -> *) Biapplicative Source # 
HasSuperClasses (* -> * -> *) Choice Source # 
HasSuperClasses (* -> * -> *) Closed Source # 
HasSuperClasses (* -> * -> *) Strong Source # 
HasSuperClasses (* -> * -> *) Profunctor Source # 
HasSuperClasses (* -> *) Monad Source # 
HasSuperClasses (* -> *) Functor Source # 
HasSuperClasses (* -> *) Applicative Source # 
HasSuperClasses (* -> *) Foldable Source # 
HasSuperClasses (* -> *) Traversable Source # 
HasSuperClasses (* -> *) Alternative Source # 
HasSuperClasses (* -> *) Comonad Source # 
HasSuperClasses (* -> *) Divisible Source # 
HasSuperClasses (* -> *) Decidable Source # 
HasSuperClasses (* -> *) Contravariant Source # 
HasSuperClasses (k -> k -> *) (Category k) Source # 

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ... Source #

Equations

a ++ '[] = a 
'[] ++ b = b 
(a ': as) ++ bs = a ': (as ++ bs) 

type family FoldConstraints (cs :: [k -> Constraint]) (x :: k) :: Constraint Source #

Instances

type FoldConstraints k ([] (k -> Constraint)) x Source # 
type FoldConstraints k ([] (k -> Constraint)) x = ()
type FoldConstraints k ((:) (k -> Constraint) c cs) x Source # 
type FoldConstraints k ((:) (k -> Constraint) c cs) x = (c x, FoldConstraints k cs x)

class Elem (c :: k -> Constraint) (cs :: [k -> Constraint]) where Source #

Minimal complete definition

isElem

Methods

isElem :: Proxy cs -> FoldConstraints cs x :- c x Source #

Instances

Elem k b cs => Elem k b ((:) (k -> Constraint) c cs) Source # 

Methods

isElem :: Proxy [b -> Constraint] cs -> FoldConstraints b cs x :- ((k -> Constraint) ': c) cs x Source #

Elem k c ((:) (k -> Constraint) c cs) Source # 

Methods

isElem :: Proxy [c -> Constraint] cs -> FoldConstraints c cs x :- ((k -> Constraint) ': c) cs x Source #

class IsSubset as bs where Source #

Minimal complete definition

isSubset

Methods

isSubset :: as `Subset` bs => Proxy x -> Proxy as -> Proxy bs -> FoldConstraints bs x :- FoldConstraints as x Source #

Instances

IsSubset k ([] (k -> Constraint)) bs Source # 

Methods

isSubset :: Subset ([k -> Constraint] -> Constraint) bs bs => Proxy [k -> Constraint] x -> Proxy [[k -> Constraint] -> Constraint] bs -> Proxy [[k -> Constraint] -> Constraint] bs -> FoldConstraints [k -> Constraint] bs x :- FoldConstraints [k -> Constraint] bs x Source #

IsSubset k as bs => IsSubset k ((:) (k -> Constraint) a as) bs Source # 

Methods

isSubset :: Subset (((k -> Constraint) ': a) as -> Constraint) bs bs => Proxy (((k -> Constraint) ': a) as) x -> Proxy [((k -> Constraint) ': a) as -> Constraint] bs -> Proxy [((k -> Constraint) ': a) as -> Constraint] bs -> FoldConstraints (((k -> Constraint) ': a) as) bs x :- FoldConstraints (((k -> Constraint) ': a) as) bs x Source #

type family Subset (xs :: [k]) (ys :: [k]) :: Constraint Source #

Instances

type Subset k ([] k) bs Source # 
type Subset k ([] k) bs = ()
type Subset (k -> Constraint) ((:) (k -> Constraint) a as) bs Source # 
type Subset (k -> Constraint) ((:) (k -> Constraint) a as) bs = (Elem k a bs, Subset (k -> Constraint) as bs)