constrained-categories 0.4.1.0 → 0.4.2.0
raw patch · 9 files changed
+111/−13 lines, 9 filesdep ~trivial-constraintPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: trivial-constraint
API changes (from Hackage documentation)
- Control.Arrow.Constrained: type family PointObject a x :: Constraint;
- Control.Category.Constrained: type family AgentVal k a v :: *;
- Control.Category.Constrained: type o ⊢ k = ConstrainedCategory k o
- Control.Category.Constrained.Prelude: ConstrainedMorphism :: k a b -> ConstrainedCategory (k :: * -> * -> *) (o :: * -> Constraint) (a :: *) (b :: *)
- Control.Category.Constrained.Prelude: newtype ConstrainedCategory (k :: * -> * -> *) (o :: * -> Constraint) (a :: *) (b :: *)
- Control.Category.Constrained.Prelude: type o ⊢ k = ConstrainedCategory k o
- Control.Category.Constrained.Reified.PolyPattern: type family SpecificCat k :: * -> * -> *;
- Control.Functor.Constrained: instance (Control.Functor.Constrained.Functor [] k k, o [Control.Category.Constrained.UnitObject k]) => Control.Functor.Constrained.Functor [] (o Control.Category.Constrained.⊢ k) (o Control.Category.Constrained.⊢ k)
- Control.Functor.Constrained: instance (o (), o [()], o Data.Void.Void, o [Data.Void.Void]) => Control.Functor.Constrained.SumToProduct [] (o Control.Category.Constrained.⊢ (->)) (o Control.Category.Constrained.⊢ (->))
- Data.Traversable.Constrained: type family TraversalObject k t b :: Constraint;
+ Control.Arrow.Constrained: instance (Control.Arrow.Constrained.Morphism k, Control.Arrow.Constrained.Morphism l) => Control.Arrow.Constrained.Morphism (k Control.Category.Constrained.× l)
+ Control.Arrow.Constrained: instance (Control.Arrow.Constrained.PreArrow k, Control.Arrow.Constrained.PreArrow l) => Control.Arrow.Constrained.PreArrow (k Control.Category.Constrained.× l)
+ Control.Arrow.Constrained: instance (Control.Arrow.Constrained.WellPointed k, Control.Arrow.Constrained.WellPointed l) => Control.Arrow.Constrained.WellPointed (k Control.Category.Constrained.× l)
+ Control.Category.Constrained: (:***:) :: k (LFactor p) (LFactor q) -> l (RFactor p) (RFactor q) -> ProductCategory (k :: Type -> Type -> Type) (l :: Type -> Type -> Type) p q
+ Control.Category.Constrained: data ProductCategory (k :: Type -> Type -> Type) (l :: Type -> Type -> Type) p q
+ Control.Category.Constrained: infixr 3 :***:
+ Control.Category.Constrained: instance (Control.Category.Constrained.Cartesian k, Control.Category.Constrained.Cartesian l) => Control.Category.Constrained.Cartesian (k Control.Category.Constrained.× l)
+ Control.Category.Constrained: instance (Control.Category.Constrained.Category k, Control.Category.Constrained.Category l) => Control.Category.Constrained.Category (k Control.Category.Constrained.× l)
+ Control.Category.Constrained.Prelude: (:***:) :: k (LFactor p) (LFactor q) -> l (RFactor p) (RFactor q) -> ProductCategory (k :: Type -> Type -> Type) (l :: Type -> Type -> Type) p q
+ Control.Category.Constrained.Prelude: class a ~# b => (a :: k) ~ (b :: k)
+ Control.Category.Constrained.Prelude: data ProductCategory (k :: Type -> Type -> Type) (l :: Type -> Type -> Type) p q
+ Control.Category.Constrained.Reified.PolyPattern: type SpecificCat (k :: Type -> Type -> Type) :: Type -> Type -> Type;
+ Control.Category.Hask: class a ~# b => (a :: k) ~ (b :: k)
+ Control.Category.Hask: liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
+ Control.Functor.Constrained: instance (o (), o GHC.Base.Void, o [GHC.Base.Void]) => Control.Functor.Constrained.SumToProduct [] (o Control.Category.Constrained.⊢ (->)) (o Control.Category.Constrained.⊢ (->))
+ Control.Functor.Constrained: instance Control.Functor.Constrained.Functor [] k k => Control.Functor.Constrained.Functor [] (o Control.Category.Constrained.⊢ k) (o Control.Category.Constrained.⊢ k)
+ Data.CategoryObject.Product: ProductCatObj :: a -> b -> ProductCatObj a b
+ Data.CategoryObject.Product: class IsProduct t
+ Data.CategoryObject.Product: data ProductCatObj a b
+ Data.CategoryObject.Product: instance (Data.CategoryObject.Product.IsProduct a, Data.CategoryObject.Product.IsProduct b) => Data.CategoryObject.Product.IsProduct (a, b)
+ Data.CategoryObject.Product: instance (GHC.Base.Monoid a, GHC.Base.Monoid b) => GHC.Base.Monoid (Data.CategoryObject.Product.ProductCatObj a b)
+ Data.CategoryObject.Product: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b) => GHC.Base.Semigroup (Data.CategoryObject.Product.ProductCatObj a b)
+ Data.CategoryObject.Product: instance Data.CategoryObject.Product.IsProduct (Data.CategoryObject.Product.ProductCatObj a b)
+ Data.CategoryObject.Product: lfactorProj :: IsProduct t => t -> LFactor t
+ Data.CategoryObject.Product: rfactorProj :: IsProduct t => t -> RFactor t
+ Data.CategoryObject.Product: type family RFactor t
- Control.Applicative.Constrained: (<*>) :: (Applicative f r t, ObjectMorphism r a b, ObjectMorphism t (f a) (f b), Object t (t (f a) (f b)), ObjectPair r (r a b) a, ObjectPair t (f (r a b)) (f a), Object r a, Object r b) => f (r a b) `t` t (f a) (f b)
+ Control.Applicative.Constrained: (<*>) :: (Applicative f r t, ObjectMorphism r a b, ObjectMorphism t (f a) (f b), Object t (t (f a) (f b)), ObjectPair r (r a b) a, ObjectPair t (f (r a b)) (f a), Object r a, Object r b) => t (f (r a b)) (t (f a) (f b))
- Control.Applicative.Constrained: class (Monoidal f r t, Curry r, Curry t) => Applicative f r t
+ Control.Applicative.Constrained: class (Monoidal f r t, Curry r, Curry t) => Applicative (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Applicative.Constrained: class (Functor f r t, Cartesian r, Cartesian t) => Monoidal f r t
+ Control.Applicative.Constrained: class (Functor f r t, Cartesian r, Cartesian t, Object t f UnitObject r) => Monoidal (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Applicative.Constrained: constPure :: (WellPointed r, Monoidal f r t, ObjectPoint r a, Object t (f a)) => a -> t (UnitObject t) (f a)
+ Control.Applicative.Constrained: constPure :: forall (r :: Type -> Type -> Type) f t a. (WellPointed r, Monoidal f r t, ObjectPoint r a, Object t (f a)) => a -> t (UnitObject t) (f a)
- Control.Applicative.Constrained: constrainedFZipWith :: (Category r, Category t, o a, o b, o (a, b), o c, o (f a, f b), o (f c)) => (r (a, b) c -> t (f a, f b) (f c)) -> (o ⊢ r) (a, b) c -> (o ⊢ t) (f a, f b) (f c)
+ Control.Applicative.Constrained: constrainedFZipWith :: forall r t (o :: Type -> Constraint) a b c f. (Category r, Category t, o a, o b, o (a, b), o c, o (f a, f b), o (f c)) => (r (a, b) c -> t (f a, f b) (f c)) -> (o ⊢ r) (a, b) c -> (o ⊢ t) (f a, f b) (f c)
- Control.Applicative.Constrained: fzip :: (Monoidal f r t, ObjectPair r a b, ObjectPair t (f a) (f b), Object t (f (a, b))) => t (f a, f b) (f (a, b))
+ Control.Applicative.Constrained: fzip :: forall f (r :: Type -> Type -> Type) t a b. (Monoidal f r t, ObjectPair r a b, ObjectPair t (f a) (f b), Object t (f (a, b))) => t (f a, f b) (f (a, b))
- Control.Applicative.Constrained: liftA :: (Applicative f r t, Object r a, Object r b, Object t (f a), Object t (f b)) => (a `r` b) -> f a `t` f b
+ Control.Applicative.Constrained: liftA :: (Applicative f r t, Object r a, Object r b, Object t (f a), Object t (f b)) => r a b -> t (f a) (f b)
- Control.Applicative.Constrained: liftA2 :: (Applicative f r t, Object r c, ObjectMorphism r b c, Object t (f c), ObjectMorphism t (f b) (f c), ObjectPair r a b, ObjectPair t (f a) (f b)) => (a `r` (b `r` c)) -> f a `t` (f b `t` f c)
+ Control.Applicative.Constrained: liftA2 :: (Applicative f r t, Object r c, ObjectMorphism r b c, Object t (f c), ObjectMorphism t (f b) (f c), ObjectPair r a b, ObjectPair t (f a) (f b)) => r a (r b c) -> t (f a) (t (f b) (f c))
- Control.Applicative.Constrained: liftA3 :: (Applicative f r t, Object r c, Object r d, ObjectMorphism r c d, ObjectMorphism r b (c `r` d), Object r (r c d), ObjectPair r a b, ObjectPair r (r c d) c, Object t (f c), Object t (f d), Object t (f a, f b), ObjectMorphism t (f c) (f d), ObjectMorphism t (f b) (t (f c) (f d)), Object t (t (f c) (f d)), ObjectPair t (f a) (f b), ObjectPair t (t (f c) (f d)) (f c), ObjectPair t (f (r c d)) (f c)) => (a `r` (b `r` (c `r` d))) -> f a `t` (f b `t` (f c `t` f d))
+ Control.Applicative.Constrained: liftA3 :: (Applicative f r t, Object r c, Object r d, ObjectMorphism r c d, ObjectMorphism r b (r c d), Object r (r c d), ObjectPair r a b, ObjectPair r (r c d) c, Object t (f c), Object t (f d), Object t (f a, f b), ObjectMorphism t (f c) (f d), ObjectMorphism t (f b) (t (f c) (f d)), Object t (t (f c) (f d)), ObjectPair t (f a) (f b), ObjectPair t (t (f c) (f d)) (f c), ObjectPair t (f (r c d)) (f c)) => r a (r b (r c d)) -> t (f a) (t (f b) (t (f c) (f d)))
- Control.Applicative.Constrained: pure :: (Applicative f r t, Object r a, Object t (f a)) => a `t` f a
+ Control.Applicative.Constrained: pure :: (Applicative f r t, Object r a, Object t (f a)) => t a (f a)
- Control.Applicative.Constrained: pureUnit :: Monoidal f r t => UnitObject t `t` f (UnitObject r)
+ Control.Applicative.Constrained: pureUnit :: Monoidal f r t => t (UnitObject t) (f (UnitObject r))
- Control.Arrow.Constrained: class (Morphism k, HasAgent k) => CartesianAgent k
+ Control.Arrow.Constrained: class (Morphism k, HasAgent k) => CartesianAgent (k :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (Category a, Category k) => EnhancedCat a k
+ Control.Arrow.Constrained: class (Category a, Category k) => EnhancedCat (a :: Type -> Type -> Type) (k :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (CoCartesian a) => MorphChoice a
+ Control.Arrow.Constrained: class CoCartesian a => MorphChoice (a :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (Cartesian a) => Morphism a
+ Control.Arrow.Constrained: class Cartesian a => Morphism (a :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (HasAgent k, AgentVal k a x ~ p a x) => PointAgent p k a x | p -> k
+ Control.Arrow.Constrained: class (HasAgent k, AgentVal k a x ~ p a x) => PointAgent (p :: Type -> Type -> Type) (k :: Type -> Type -> Type) a x | p -> k
- Control.Arrow.Constrained: class (MorphChoice k) => PreArrChoice k
+ Control.Arrow.Constrained: class MorphChoice k => PreArrChoice (k :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (Morphism a) => PreArrow a
+ Control.Arrow.Constrained: class Morphism a => PreArrow (a :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (PreArrow k, PreArrChoice k) => SPDistribute k
+ Control.Arrow.Constrained: class (PreArrow k, PreArrChoice k) => SPDistribute (k :: Type -> Type -> Type)
- Control.Arrow.Constrained: class (PreArrow a, ObjectPoint a (UnitObject a)) => WellPointed a where {
+ Control.Arrow.Constrained: class (PreArrow a, ObjectPoint a UnitObject a) => WellPointed (a :: Type -> Type -> Type) where {
- Control.Arrow.Constrained: flout :: (EnhancedCat k Coercion, Coercible b a, Object k a, Object k b) => p a b -> k b a
+ Control.Arrow.Constrained: flout :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Coercible b a, Object k a, Object k b) => p a b -> k b a
- Control.Arrow.Constrained: follow :: (EnhancedCat k Coercion, Coercible a b, Object k a, Object k b) => p a b -> k a b
+ Control.Arrow.Constrained: follow :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Coercible a b, Object k a, Object k b) => p a b -> k a b
- Control.Arrow.Constrained: genericPoint :: (WellPointed k, Object k a, ObjectPoint k x) => x -> GenericAgent k a x
+ Control.Arrow.Constrained: genericPoint :: forall (k :: Type -> Type -> Type) a x. (WellPointed k, Object k a, ObjectPoint k x) => x -> GenericAgent k a x
- Control.Arrow.Constrained: genericUnit :: (PreArrow k, HasAgent k, Object k a) => GenericAgent k a (UnitObject k)
+ Control.Arrow.Constrained: genericUnit :: forall (k :: Type -> Type -> Type) a. (PreArrow k, HasAgent k, Object k a) => GenericAgent k a (UnitObject k)
- Control.Arrow.Constrained: ifThenElse :: (EnhancedCat f (->), Function f, Object f Bool, Object f a, Object f (f a a), Object f (f a (f a a))) => Bool `f` (a `f` (a `f` a))
+ Control.Arrow.Constrained: ifThenElse :: (EnhancedCat f (->), Function f, Object f Bool, Object f a, Object f (f a a), Object f (f a (f a a))) => f Bool (f a (f a a))
- Control.Arrow.Constrained: point :: (PointAgent p k a x, Object k a, Object k x) => x -> p a x
+ Control.Arrow.Constrained: point :: PointAgent p k a x => x -> p a x
- Control.Arrow.Constrained: pretend :: (EnhancedCat k Coercion, Object k a, Object k b) => Coercion a b -> k a a -> k b b
+ Control.Arrow.Constrained: pretend :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Object k a, Object k b) => Coercion a b -> k a a -> k b b
- Control.Arrow.Constrained: pretendLike :: (EnhancedCat k Coercion, Coercible b a, Coercible c d, Object k a, Object k b, Object k c, Object k d) => p c d -> k a c -> k b d
+ Control.Arrow.Constrained: pretendLike :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Coercible b a, Coercible c d, Object k a, Object k b, Object k c, Object k d) => p c d -> k a c -> k b d
- Control.Arrow.Constrained: swallow :: (EnhancedCat k Coercion, Object k a, Object k b) => Coercion b a -> k a a -> k b b
+ Control.Arrow.Constrained: swallow :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Object k a, Object k b) => Coercion b a -> k a a -> k b b
- Control.Arrow.Constrained: swallowLike :: (EnhancedCat k Coercion, Coercible b a, Coercible c d, Object k a, Object k b, Object k c, Object k d) => p b a -> k a c -> k b d
+ Control.Arrow.Constrained: swallowLike :: (EnhancedCat k (Coercion :: Type -> Type -> Type), Coercible b a, Coercible c d, Object k a, Object k b, Object k c, Object k d) => p b a -> k a c -> k b d
- Control.Arrow.Constrained: type Arrow a k = (WellPointed a, EnhancedCat a k)
+ Control.Arrow.Constrained: type Arrow (a :: Type -> Type -> Type) (k :: Type -> Type -> Type) = (WellPointed a, EnhancedCat a k)
- Control.Arrow.Constrained: type ArrowChoice a k = (WellPointed a, PreArrChoice a, EnhancedCat a k)
+ Control.Arrow.Constrained: type ArrowChoice (a :: Type -> Type -> Type) (k :: Type -> Type -> Type) = (WellPointed a, PreArrChoice a, EnhancedCat a k)
- Control.Arrow.Constrained: type Function f = EnhancedCat (->) f
+ Control.Arrow.Constrained: type Function (f :: Type -> Type -> Type) = EnhancedCat (->) f
- Control.Arrow.Constrained: type ObjectPoint k a = (Object k a, PointObject k a)
+ Control.Arrow.Constrained: type ObjectPoint (k :: Type -> Type -> Type) a = (Object k a, PointObject k a)
- Control.Arrow.Constrained: type PointObject a x = ();
+ Control.Arrow.Constrained: type PointObject a :: Type -> Type -> Type x = ();
- Control.Category.Constrained: (.) :: (Category k, Object k a, Object k b, Object k c) => k b c -> k a b -> k a c
+ Control.Category.Constrained: (.) :: forall (a :: κ) (b :: κ) (c :: κ). (Category k, Object k a, Object k b, Object k c) => k b c -> k a b -> k a c
- Control.Category.Constrained: ConstrainedMorphism :: k a b -> ConstrainedCategory (k :: * -> * -> *) (o :: * -> Constraint) (a :: *) (b :: *)
+ Control.Category.Constrained: ConstrainedMorphism :: k a b -> ConstrainedCategory (k :: Type -> Type -> Type) (o :: Type -> Constraint) a b
- Control.Category.Constrained: GenericAgent :: k a v -> GenericAgent k a v
+ Control.Category.Constrained: GenericAgent :: k2 a v -> GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1)
- Control.Category.Constrained: [runGenericAgent] :: GenericAgent k a v -> k a v
+ Control.Category.Constrained: [runGenericAgent] :: GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1) -> k2 a v
- Control.Category.Constrained: class (Category k, Monoid (UnitObject k), Object k (UnitObject k)) => Cartesian k where {
+ Control.Category.Constrained: class (Category k, Monoid UnitObject k, Object k UnitObject k) => Cartesian (k :: Type -> Type -> Type) where {
- Control.Category.Constrained: class (Category k, Object k (ZeroObject k)) => CoCartesian k where {
+ Control.Category.Constrained: class (Category k, Object k ZeroObject k) => CoCartesian (k :: Type -> Type -> Type) where {
- Control.Category.Constrained: class (Cartesian k) => Curry k where {
+ Control.Category.Constrained: class Cartesian k => Curry (k :: Type -> Type -> Type) where {
- Control.Category.Constrained: class (Category k) => HasAgent k where {
+ Control.Category.Constrained: class Category k => HasAgent (k :: Type -> Type -> Type) where {
- Control.Category.Constrained: class (Category k) => Isomorphic k a b
+ Control.Category.Constrained: class Category k => Isomorphic (k :: κ -> κ -> Type) (a :: κ) (b :: κ)
- Control.Category.Constrained: constrained :: forall o k a b. (Category k, o a, o b) => k a b -> (o ⊢ k) a b
+ Control.Category.Constrained: constrained :: forall (o :: Type -> Constraint) k a b. (Category k, o a, o b) => k a b -> (o ⊢ k) a b
- Control.Category.Constrained: data GenericAgent k a v
+ Control.Category.Constrained: data GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1)
- Control.Category.Constrained: id :: (Category k, Object k a) => k a a
+ Control.Category.Constrained: id :: forall (a :: κ). (Category k, Object k a) => k a a
- Control.Category.Constrained: inCategoryOf :: Category k => k a b -> k c d -> k a b
+ Control.Category.Constrained: inCategoryOf :: forall {κ} k (a :: κ) (b :: κ) (c :: κ) (d :: κ). Category k => k a b -> k c d -> k a b
- Control.Category.Constrained: newtype ConstrainedCategory (k :: * -> * -> *) (o :: * -> Constraint) (a :: *) (b :: *)
+ Control.Category.Constrained: newtype ConstrainedCategory (k :: Type -> Type -> Type) (o :: Type -> Constraint) a b
- Control.Category.Constrained: type (+) = Either
+ Control.Category.Constrained: type (×) = ProductCategory
- Control.Category.Constrained: type AgentVal k a v = GenericAgent k a v;
+ Control.Category.Constrained: type AgentVal k :: Type -> Type -> Type a v = GenericAgent k a v;
- Control.Category.Constrained: type CatTagged k x = Tagged (k (UnitObject k) (UnitObject k)) x
+ Control.Category.Constrained: type CatTagged (k :: Type -> Type -> Type) x = Tagged k UnitObject k UnitObject k x
- Control.Category.Constrained: type ConstrainedFunction isObj = ConstrainedCategory (->) isObj
+ Control.Category.Constrained: type ConstrainedFunction (isObj :: Type -> Constraint) = ConstrainedCategory (->) isObj
- Control.Category.Constrained: type Hask = Unconstrained ⊢ (->)
+ Control.Category.Constrained: type Hask = Unconstrained :: Type -> Constraint ⊢ (->)
- Control.Category.Constrained: type MorphObjects k b c = ();
+ Control.Category.Constrained: type MorphObjects k :: Type -> Type -> Type b c = ();
- Control.Category.Constrained: type Object k o = ();
+ Control.Category.Constrained: type Object k :: κ -> κ -> Type o :: κ = ();
- Control.Category.Constrained: type ObjectMorphism k b c = (Object k b, Object k c, MorphObjects k b c, Object k (k b c))
+ Control.Category.Constrained: type ObjectMorphism (k :: Type -> Type -> Type) b c = (Object k b, Object k c, MorphObjects k b c, Object k k b c)
- Control.Category.Constrained: type ObjectPair k a b = (Category k, Object k a, Object k b, PairObjects k a b, Object k (a, b))
+ Control.Category.Constrained: type ObjectPair (k :: Type -> Type -> Type) a b = (Category k, Object k a, Object k b, PairObjects k a b, Object k (a, b))
- Control.Category.Constrained: type ObjectSum k a b = (Category k, Object k a, Object k b, SumObjects k a b, Object k (a + b))
+ Control.Category.Constrained: type ObjectSum (k :: Type -> Type -> Type) a b = (Category k, Object k a, Object k b, SumObjects k a b, Object k a + b)
- Control.Category.Constrained: type PairObjects k a b = ();
+ Control.Category.Constrained: type PairObjects k :: Type -> Type -> Type a b = ();
- Control.Category.Constrained: type SumObjects k a b = ();
+ Control.Category.Constrained: type SumObjects k :: Type -> Type -> Type a b = ();
- Control.Category.Constrained: type UnitObject k = ();
+ Control.Category.Constrained: type UnitObject k :: Type -> Type -> Type = ();
- Control.Category.Constrained: type ZeroObject k = Void;
+ Control.Category.Constrained: type ZeroObject k :: Type -> Type -> Type = Void;
- Control.Category.Constrained: unconstrained :: forall o k a b. Category k => (o ⊢ k) a b -> k a b
+ Control.Category.Constrained: unconstrained :: forall (o :: Type -> Constraint) k a b. Category k => (o ⊢ k) a b -> k a b
- Control.Category.Constrained.Prelude: (!!) :: [a] -> Int -> a
+ Control.Category.Constrained.Prelude: (!!) :: HasCallStack => [a] -> Int -> a
- Control.Category.Constrained.Prelude: ($!) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
+ Control.Category.Constrained.Prelude: ($!) :: (a -> b) -> a -> b
- Control.Category.Constrained.Prelude: (.) :: (Category k, Object k a, Object k b, Object k c) => k b c -> k a b -> k a c
+ Control.Category.Constrained.Prelude: (.) :: forall (a :: κ) (b :: κ) (c :: κ). (Category k, Object k a, Object k b, Object k c) => k b c -> k a b -> k a c
- Control.Category.Constrained.Prelude: (<*>) :: (Applicative f r t, ObjectMorphism r a b, ObjectMorphism t (f a) (f b), Object t (t (f a) (f b)), ObjectPair r (r a b) a, ObjectPair t (f (r a b)) (f a), Object r a, Object r b) => f (r a b) `t` t (f a) (f b)
+ Control.Category.Constrained.Prelude: (<*>) :: (Applicative f r t, ObjectMorphism r a b, ObjectMorphism t (f a) (f b), Object t (t (f a) (f b)), ObjectPair r (r a b) a, ObjectPair t (f (r a b)) (f a), Object r a, Object r b) => t (f (r a b)) (t (f a) (f b))
- Control.Category.Constrained.Prelude: -- | Defaults to <tt>()</tt>, and should normally be left at that.
+ Control.Category.Constrained.Prelude: -- | Defaults to <a>Void</a>.
- Control.Category.Constrained.Prelude: GenericAgent :: k a v -> GenericAgent k a v
+ Control.Category.Constrained.Prelude: GenericAgent :: k2 a v -> GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1)
- Control.Category.Constrained.Prelude: Kleisli :: k a (m b) -> Kleisli m k a b
+ Control.Category.Constrained.Prelude: Kleisli :: k a (m b) -> Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b
- Control.Category.Constrained.Prelude: [runGenericAgent] :: GenericAgent k a v -> k a v
+ Control.Category.Constrained.Prelude: [runGenericAgent] :: GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1) -> k2 a v
- Control.Category.Constrained.Prelude: [runKleisli] :: Kleisli m k a b -> k a (m b)
+ Control.Category.Constrained.Prelude: [runKleisli] :: Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b -> k a (m b)
- Control.Category.Constrained.Prelude: class (Monoidal f r t, Curry r, Curry t) => Applicative f r t
+ Control.Category.Constrained.Prelude: class (Monoidal f r t, Curry r, Curry t) => Applicative (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Category.Constrained.Prelude: class (Category k, Monoid (UnitObject k), Object k (UnitObject k)) => Cartesian k where {
+ Control.Category.Constrained.Prelude: class (Category k, Monoid UnitObject k, Object k UnitObject k) => Cartesian (k :: Type -> Type -> Type) where {
- Control.Category.Constrained.Prelude: class (Category k, Object k (ZeroObject k)) => CoCartesian k where {
+ Control.Category.Constrained.Prelude: class (Category k, Object k ZeroObject k) => CoCartesian (k :: Type -> Type -> Type) where {
- Control.Category.Constrained.Prelude: class (Cartesian k) => Curry k where {
+ Control.Category.Constrained.Prelude: class Cartesian k => Curry (k :: Type -> Type -> Type) where {
- Control.Category.Constrained.Prelude: class (Category r, Category t, Object t (f (UnitObject r))) => Functor f r t | f r -> t, f t -> r
+ Control.Category.Constrained.Prelude: class (Category r, Category t) => Functor (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type) | f r -> t, f t -> r
- Control.Category.Constrained.Prelude: class (Category k) => HasAgent k where {
+ Control.Category.Constrained.Prelude: class Category k => HasAgent (k :: Type -> Type -> Type) where {
- Control.Category.Constrained.Prelude: class (Category k) => Isomorphic k a b
+ Control.Category.Constrained.Prelude: class Category k => Isomorphic (k :: κ -> κ -> Type) (a :: κ) (b :: κ)
- Control.Category.Constrained.Prelude: class (Applicative m k k, Object k (m (UnitObject k)), Object k (m (m (UnitObject k)))) => Monad m k
+ Control.Category.Constrained.Prelude: class (Applicative m k k, Object k m UnitObject k, Object k m m UnitObject k) => Monad (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Category.Constrained.Prelude: class (MonadPlus m k) => MonadFail m k
+ Control.Category.Constrained.Prelude: class MonadPlus m k => MonadFail (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Category.Constrained.Prelude: class (Functor f r t, Cartesian r, Cartesian t) => Monoidal f r t
+ Control.Category.Constrained.Prelude: class (Functor f r t, Cartesian r, Cartesian t, Object t f UnitObject r) => Monoidal (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Category.Constrained.Prelude: class (CoCartesian r, Cartesian t, Functor f r t, Object t (f (ZeroObject r))) => SumToProduct f r t
+ Control.Category.Constrained.Prelude: class (CoCartesian r, Cartesian t, Functor f r t, Object t f ZeroObject r) => SumToProduct (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Category.Constrained.Prelude: constPure :: (WellPointed r, Monoidal f r t, ObjectPoint r a, Object t (f a)) => a -> t (UnitObject t) (f a)
+ Control.Category.Constrained.Prelude: constPure :: forall (r :: Type -> Type -> Type) f t a. (WellPointed r, Monoidal f r t, ObjectPoint r a, Object t (f a)) => a -> t (UnitObject t) (f a)
- Control.Category.Constrained.Prelude: constrained :: forall o k a b. (Category k, o a, o b) => k a b -> (o ⊢ k) a b
+ Control.Category.Constrained.Prelude: constrained :: forall (o :: Type -> Constraint) k a b. (Category k, o a, o b) => k a b -> (o ⊢ k) a b
- Control.Category.Constrained.Prelude: constrainedFZipWith :: (Category r, Category t, o a, o b, o (a, b), o c, o (f a, f b), o (f c)) => (r (a, b) c -> t (f a, f b) (f c)) -> (o ⊢ r) (a, b) c -> (o ⊢ t) (f a, f b) (f c)
+ Control.Category.Constrained.Prelude: constrainedFZipWith :: forall r t (o :: Type -> Constraint) a b c f. (Category r, Category t, o a, o b, o (a, b), o c, o (f a, f b), o (f c)) => (r (a, b) c -> t (f a, f b) (f c)) -> (o ⊢ r) (a, b) c -> (o ⊢ t) (f a, f b) (f c)
- Control.Category.Constrained.Prelude: constrainedFmap :: (Category r, Category t, o a, o b, o (f a), o (f b)) => (r a b -> t (f a) (f b)) -> (o ⊢ r) a b -> (o ⊢ t) (f a) (f b)
+ Control.Category.Constrained.Prelude: constrainedFmap :: forall r t (o :: Type -> Constraint) a b f. (Category r, Category t, o a, o b, o (f a), o (f b)) => (r a b -> t (f a) (f b)) -> (o ⊢ r) a b -> (o ⊢ t) (f a) (f b)
- Control.Category.Constrained.Prelude: cycle :: [a] -> [a]
+ Control.Category.Constrained.Prelude: cycle :: HasCallStack => [a] -> [a]
- Control.Category.Constrained.Prelude: data ConstrainedCategory (k :: * -> * -> *) (o :: * -> Constraint) (a :: *) (b :: *)
+ Control.Category.Constrained.Prelude: data ConstrainedCategory (k :: Type -> Type -> Type) (o :: Type -> Constraint) a b
- Control.Category.Constrained.Prelude: data GenericAgent k a v
+ Control.Category.Constrained.Prelude: data GenericAgent (k2 :: k -> k1 -> Type) (a :: k) (v :: k1)
- Control.Category.Constrained.Prelude: error :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => [Char] -> a
+ Control.Category.Constrained.Prelude: error :: HasCallStack => [Char] -> a
- Control.Category.Constrained.Prelude: errorWithoutStackTrace :: forall (r :: RuntimeRep) (a :: TYPE r). [Char] -> a
+ Control.Category.Constrained.Prelude: errorWithoutStackTrace :: [Char] -> a
- Control.Category.Constrained.Prelude: filterM :: (PreArrow k, Monad m k, SumToProduct c k k, EndoTraversable c k, ObjectPair k Bool a, Object k (c a), Object k (m (c a)), ObjectPair k (Bool, a) (c (Bool, a)), ObjectPair k (m Bool) (m a), ObjectPair k (m (Bool, a)) (m (c (Bool, a))), TraversalObject k c (Bool, a)) => (a `k` m Bool) -> c a `k` m (c a)
+ Control.Category.Constrained.Prelude: filterM :: (PreArrow k, Monad m k, SumToProduct c k k, EndoTraversable c k, ObjectPair k Bool a, Object k (c a), Object k (m (c a)), ObjectPair k (Bool, a) (c (Bool, a)), ObjectPair k (m Bool) (m a), ObjectPair k (m (Bool, a)) (m (c (Bool, a))), TraversalObject k c (Bool, a)) => k a (m Bool) -> k (c a) (m (c a))
- Control.Category.Constrained.Prelude: forM :: forall s t k m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> (a `l` m b) -> m (t b)
+ Control.Category.Constrained.Prelude: forM :: forall s t (k :: Type -> Type -> Type) m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> l a (m b) -> m (t b)
- Control.Category.Constrained.Prelude: forM_ :: forall t k l f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> (a `k` f b) -> f uk
+ Control.Category.Constrained.Prelude: forM_ :: forall t k (l :: Type -> Type -> Type) f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> k a (f b) -> f uk
- Control.Category.Constrained.Prelude: fzip :: (Monoidal f r t, ObjectPair r a b, ObjectPair t (f a) (f b), Object t (f (a, b))) => t (f a, f b) (f (a, b))
+ Control.Category.Constrained.Prelude: fzip :: forall f (r :: Type -> Type -> Type) t a b. (Monoidal f r t, ObjectPair r a b, ObjectPair t (f a) (f b), Object t (f (a, b))) => t (f a, f b) (f (a, b))
- Control.Category.Constrained.Prelude: head :: [a] -> a
+ Control.Category.Constrained.Prelude: head :: HasCallStack => [a] -> a
- Control.Category.Constrained.Prelude: id :: (Category k, Object k a) => k a a
+ Control.Category.Constrained.Prelude: id :: forall (a :: κ). (Category k, Object k a) => k a a
- Control.Category.Constrained.Prelude: ifThenElse :: (EnhancedCat f (->), Function f, Object f Bool, Object f a, Object f (f a a), Object f (f a (f a a))) => Bool `f` (a `f` (a `f` a))
+ Control.Category.Constrained.Prelude: ifThenElse :: (EnhancedCat f (->), Function f, Object f Bool, Object f a, Object f (f a a), Object f (f a (f a a))) => f Bool (f a (f a a))
- Control.Category.Constrained.Prelude: inCategoryOf :: Category k => k a b -> k c d -> k a b
+ Control.Category.Constrained.Prelude: inCategoryOf :: forall {κ} k (a :: κ) (b :: κ) (c :: κ) (d :: κ). Category k => k a b -> k c d -> k a b
- Control.Category.Constrained.Prelude: infixl 7 *
+ Control.Category.Constrained.Prelude: infixl 7 /
- Control.Category.Constrained.Prelude: infixr 8 ^
+ Control.Category.Constrained.Prelude: infixr 8 ^^
- Control.Category.Constrained.Prelude: init :: [a] -> [a]
+ Control.Category.Constrained.Prelude: init :: HasCallStack => [a] -> [a]
- Control.Category.Constrained.Prelude: join :: (Monad m k, Object k a, Object k (m a), Object k (m (m a))) => m (m a) `k` m a
+ Control.Category.Constrained.Prelude: join :: (Monad m k, Object k a, Object k (m a), Object k (m (m a))) => k (m (m a)) (m a)
- Control.Category.Constrained.Prelude: last :: [a] -> a
+ Control.Category.Constrained.Prelude: last :: HasCallStack => [a] -> a
- Control.Category.Constrained.Prelude: liftA :: (Applicative f r t, Object r a, Object r b, Object t (f a), Object t (f b)) => (a `r` b) -> f a `t` f b
+ Control.Category.Constrained.Prelude: liftA :: (Applicative f r t, Object r a, Object r b, Object t (f a), Object t (f b)) => r a b -> t (f a) (f b)
- Control.Category.Constrained.Prelude: liftA2 :: (Applicative f r t, Object r c, ObjectMorphism r b c, Object t (f c), ObjectMorphism t (f b) (f c), ObjectPair r a b, ObjectPair t (f a) (f b)) => (a `r` (b `r` c)) -> f a `t` (f b `t` f c)
+ Control.Category.Constrained.Prelude: liftA2 :: (Applicative f r t, Object r c, ObjectMorphism r b c, Object t (f c), ObjectMorphism t (f b) (f c), ObjectPair r a b, ObjectPair t (f a) (f b)) => r a (r b c) -> t (f a) (t (f b) (f c))
- Control.Category.Constrained.Prelude: liftA3 :: (Applicative f r t, Object r c, Object r d, ObjectMorphism r c d, ObjectMorphism r b (c `r` d), Object r (r c d), ObjectPair r a b, ObjectPair r (r c d) c, Object t (f c), Object t (f d), Object t (f a, f b), ObjectMorphism t (f c) (f d), ObjectMorphism t (f b) (t (f c) (f d)), Object t (t (f c) (f d)), ObjectPair t (f a) (f b), ObjectPair t (t (f c) (f d)) (f c), ObjectPair t (f (r c d)) (f c)) => (a `r` (b `r` (c `r` d))) -> f a `t` (f b `t` (f c `t` f d))
+ Control.Category.Constrained.Prelude: liftA3 :: (Applicative f r t, Object r c, Object r d, ObjectMorphism r c d, ObjectMorphism r b (r c d), Object r (r c d), ObjectPair r a b, ObjectPair r (r c d) c, Object t (f c), Object t (f d), Object t (f a, f b), ObjectMorphism t (f c) (f d), ObjectMorphism t (f b) (t (f c) (f d)), Object t (t (f c) (f d)), ObjectPair t (f a) (f b), ObjectPair t (t (f c) (f d)) (f c), ObjectPair t (f (r c d)) (f c)) => r a (r b (r c d)) -> t (f a) (t (f b) (t (f c) (f d)))
- Control.Category.Constrained.Prelude: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => (a `k` m b) -> t a `k` m (t b)
+ Control.Category.Constrained.Prelude: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => k a (m b) -> k (t a) (m (t b))
- Control.Category.Constrained.Prelude: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => (a `k` f b) -> t a `k` f u
+ Control.Category.Constrained.Prelude: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => k a (f b) -> k (t a) (f u)
- Control.Category.Constrained.Prelude: newtype Kleisli m k a b
+ Control.Category.Constrained.Prelude: newtype Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b
- Control.Category.Constrained.Prelude: pure :: (Applicative f r t, Object r a, Object t (f a)) => a `t` f a
+ Control.Category.Constrained.Prelude: pure :: (Applicative f r t, Object r a, Object t (f a)) => t a (f a)
- Control.Category.Constrained.Prelude: pureUnit :: Monoidal f r t => UnitObject t `t` f (UnitObject r)
+ Control.Category.Constrained.Prelude: pureUnit :: Monoidal f r t => t (UnitObject t) (f (UnitObject r))
- Control.Category.Constrained.Prelude: seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b
+ Control.Category.Constrained.Prelude: seq :: a -> b -> b
- Control.Category.Constrained.Prelude: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => t (f a) `k` f (t a)
+ Control.Category.Constrained.Prelude: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => k (t (f a)) (f (t a))
- Control.Category.Constrained.Prelude: sequence_ :: forall t k l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => t (m a) `l` m uk
+ Control.Category.Constrained.Prelude: sequence_ :: forall t (k :: Type -> Type -> Type) l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => l (t (m a)) (m uk)
- Control.Category.Constrained.Prelude: tail :: [a] -> [a]
+ Control.Category.Constrained.Prelude: tail :: HasCallStack => [a] -> [a]
- Control.Category.Constrained.Prelude: type (+) = Either
+ Control.Category.Constrained.Prelude: type (×) = ProductCategory
- Control.Category.Constrained.Prelude: type AgentVal k a v = GenericAgent k a v;
+ Control.Category.Constrained.Prelude: type AgentVal k :: Type -> Type -> Type a v = GenericAgent k a v;
- Control.Category.Constrained.Prelude: type CatTagged k x = Tagged (k (UnitObject k) (UnitObject k)) x
+ Control.Category.Constrained.Prelude: type CatTagged (k :: Type -> Type -> Type) x = Tagged k UnitObject k UnitObject k x
- Control.Category.Constrained.Prelude: type ConstrainedFunction isObj = ConstrainedCategory (->) isObj
+ Control.Category.Constrained.Prelude: type ConstrainedFunction (isObj :: Type -> Constraint) = ConstrainedCategory (->) isObj
- Control.Category.Constrained.Prelude: type Function f = EnhancedCat (->) f
+ Control.Category.Constrained.Prelude: type Function (f :: Type -> Type -> Type) = EnhancedCat (->) f
- Control.Category.Constrained.Prelude: type Hask = Unconstrained ⊢ (->)
+ Control.Category.Constrained.Prelude: type Hask = Unconstrained :: Type -> Constraint ⊢ (->)
- Control.Category.Constrained.Prelude: type MorphObjects k b c = ();
+ Control.Category.Constrained.Prelude: type MorphObjects k :: Type -> Type -> Type b c = ();
- Control.Category.Constrained.Prelude: type Object k o = ();
+ Control.Category.Constrained.Prelude: type Object k :: κ -> κ -> Type o :: κ = ();
- Control.Category.Constrained.Prelude: type ObjectMorphism k b c = (Object k b, Object k c, MorphObjects k b c, Object k (k b c))
+ Control.Category.Constrained.Prelude: type ObjectMorphism (k :: Type -> Type -> Type) b c = (Object k b, Object k c, MorphObjects k b c, Object k k b c)
- Control.Category.Constrained.Prelude: type ObjectPair k a b = (Category k, Object k a, Object k b, PairObjects k a b, Object k (a, b))
+ Control.Category.Constrained.Prelude: type ObjectPair (k :: Type -> Type -> Type) a b = (Category k, Object k a, Object k b, PairObjects k a b, Object k (a, b))
- Control.Category.Constrained.Prelude: type ObjectSum k a b = (Category k, Object k a, Object k b, SumObjects k a b, Object k (a + b))
+ Control.Category.Constrained.Prelude: type ObjectSum (k :: Type -> Type -> Type) a b = (Category k, Object k a, Object k b, SumObjects k a b, Object k a + b)
- Control.Category.Constrained.Prelude: type PairObjects k a b = ();
+ Control.Category.Constrained.Prelude: type PairObjects k :: Type -> Type -> Type a b = ();
- Control.Category.Constrained.Prelude: type SumObjects k a b = ();
+ Control.Category.Constrained.Prelude: type SumObjects k :: Type -> Type -> Type a b = ();
- Control.Category.Constrained.Prelude: type UnitObject k = ();
+ Control.Category.Constrained.Prelude: type UnitObject k :: Type -> Type -> Type = ();
- Control.Category.Constrained.Prelude: type ZeroObject k = Void;
+ Control.Category.Constrained.Prelude: type ZeroObject k :: Type -> Type -> Type = Void;
- Control.Category.Constrained.Prelude: type family Object k (o :: κ) :: Constraint;
+ Control.Category.Constrained.Prelude: type family AgentVal (k :: Type -> Type -> Type) a v
- Control.Category.Constrained.Prelude: unconstrained :: forall o k a b. Category k => (o ⊢ k) a b -> k a b
+ Control.Category.Constrained.Prelude: unconstrained :: forall (o :: Type -> Constraint) k a b. Category k => (o ⊢ k) a b -> k a b
- Control.Category.Constrained.Prelude: undefined :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => a
+ Control.Category.Constrained.Prelude: undefined :: HasCallStack => a
- Control.Category.Constrained.Prelude: unless :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> m u `k` m u
+ Control.Category.Constrained.Prelude: unless :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> k (m u) (m u)
- Control.Category.Constrained.Prelude: when :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> m u `k` m u
+ Control.Category.Constrained.Prelude: when :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> k (m u) (m u)
- Control.Category.Constrained.Reified: [CartesianAttachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReCartesian k α (α, u)
+ Control.Category.Constrained.Reified: [CartesianAttachUnit] :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReCartesian k α (α, u)
- Control.Category.Constrained.Reified: [CartesianCompo] :: Object k β => ReCartesian k α β -> ReCartesian k β γ -> ReCartesian k α γ
+ Control.Category.Constrained.Reified: [CartesianCompo] :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCartesian k α β1 -> ReCartesian k β1 β -> ReCartesian k α β
- Control.Category.Constrained.Reified: [CartesianDetachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReCartesian k (α, u) α
+ Control.Category.Constrained.Reified: [CartesianDetachUnit] :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReCartesian k (β, u) β
- Control.Category.Constrained.Reified: [CartesianId] :: Object k α => ReCartesian k α α
+ Control.Category.Constrained.Reified: [CartesianId] :: forall (k :: Type -> Type -> Type) α. Object k α => ReCartesian k α α
- Control.Category.Constrained.Reified: [CartesianRegroup] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReCartesian k (α, (β, γ)) ((α, β), γ)
+ Control.Category.Constrained.Reified: [CartesianRegroup] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReCartesian k (α1, (β1, γ)) ((α1, β1), γ)
- Control.Category.Constrained.Reified: [CartesianRegroup_] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReCartesian k ((α, β), γ) (α, (β, γ))
+ Control.Category.Constrained.Reified: [CartesianRegroup_] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReCartesian k ((α1, β1), γ) (α1, (β1, γ))
- Control.Category.Constrained.Reified: [CartesianSwap] :: (ObjectPair k α β, ObjectPair k β α) => ReCartesian k (α, β) (β, α)
+ Control.Category.Constrained.Reified: [CartesianSwap] :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReCartesian k (α1, β1) (β1, α1)
- Control.Category.Constrained.Reified: [CategoryCompo] :: Object k β => ReCategory k α β -> ReCategory k β γ -> ReCategory k α γ
+ Control.Category.Constrained.Reified: [CategoryCompo] :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCategory k α β1 -> ReCategory k β1 β -> ReCategory k α β
- Control.Category.Constrained.Reified: [CategoryId] :: Object k α => ReCategory k α α
+ Control.Category.Constrained.Reified: [CategoryId] :: forall (k :: Type -> Type -> Type) α. Object k α => ReCategory k α α
- Control.Category.Constrained.Reified: [MorphismAttachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReMorphism k α (α, u)
+ Control.Category.Constrained.Reified: [MorphismAttachUnit] :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReMorphism k α (α, u)
- Control.Category.Constrained.Reified: [MorphismCompo] :: Object k β => ReMorphism k α β -> ReMorphism k β γ -> ReMorphism k α γ
+ Control.Category.Constrained.Reified: [MorphismCompo] :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReMorphism k α β1 -> ReMorphism k β1 β -> ReMorphism k α β
- Control.Category.Constrained.Reified: [MorphismDetachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReMorphism k (α, u) α
+ Control.Category.Constrained.Reified: [MorphismDetachUnit] :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReMorphism k (β, u) β
- Control.Category.Constrained.Reified: [MorphismId] :: Object k α => ReMorphism k α α
+ Control.Category.Constrained.Reified: [MorphismId] :: forall (k :: Type -> Type -> Type) α. Object k α => ReMorphism k α α
- Control.Category.Constrained.Reified: [MorphismPar] :: (ObjectPair k α γ, ObjectPair k β δ) => ReMorphism k α β -> ReMorphism k γ δ -> ReMorphism k (α, γ) (β, δ)
+ Control.Category.Constrained.Reified: [MorphismPar] :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReMorphism k α1 β1 -> ReMorphism k γ δ -> ReMorphism k (α1, γ) (β1, δ)
- Control.Category.Constrained.Reified: [MorphismRegroup] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReMorphism k (α, (β, γ)) ((α, β), γ)
+ Control.Category.Constrained.Reified: [MorphismRegroup] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReMorphism k (α1, (β1, γ)) ((α1, β1), γ)
- Control.Category.Constrained.Reified: [MorphismRegroup_] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReMorphism k ((α, β), γ) (α, (β, γ))
+ Control.Category.Constrained.Reified: [MorphismRegroup_] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReMorphism k ((α1, β1), γ) (α1, (β1, γ))
- Control.Category.Constrained.Reified: [MorphismSwap] :: (ObjectPair k α β, ObjectPair k β α) => ReMorphism k (α, β) (β, α)
+ Control.Category.Constrained.Reified: [MorphismSwap] :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReMorphism k (α1, β1) (β1, α1)
- Control.Category.Constrained.Reified: [PreArrowAttachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => RePreArrow k α (α, u)
+ Control.Category.Constrained.Reified: [PreArrowAttachUnit] :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => RePreArrow k α (α, u)
- Control.Category.Constrained.Reified: [PreArrowCompo] :: Object k β => RePreArrow k α β -> RePreArrow k β γ -> RePreArrow k α γ
+ Control.Category.Constrained.Reified: [PreArrowCompo] :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => RePreArrow k α β1 -> RePreArrow k β1 β -> RePreArrow k α β
- Control.Category.Constrained.Reified: [PreArrowDetachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => RePreArrow k (α, u) α
+ Control.Category.Constrained.Reified: [PreArrowDetachUnit] :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => RePreArrow k (β, u) β
- Control.Category.Constrained.Reified: [PreArrowFanout] :: (Object k α, ObjectPair k β γ) => RePreArrow k α β -> RePreArrow k α γ -> RePreArrow k α (β, γ)
+ Control.Category.Constrained.Reified: [PreArrowFanout] :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => RePreArrow k α β1 -> RePreArrow k α γ -> RePreArrow k α (β1, γ)
- Control.Category.Constrained.Reified: [PreArrowFst] :: ObjectPair k α β => RePreArrow k (α, β) α
+ Control.Category.Constrained.Reified: [PreArrowFst] :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => RePreArrow k (β, β1) β
- Control.Category.Constrained.Reified: [PreArrowId] :: Object k α => RePreArrow k α α
+ Control.Category.Constrained.Reified: [PreArrowId] :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α α
- Control.Category.Constrained.Reified: [PreArrowPar] :: (ObjectPair k α γ, ObjectPair k β δ) => RePreArrow k α β -> RePreArrow k γ δ -> RePreArrow k (α, γ) (β, δ)
+ Control.Category.Constrained.Reified: [PreArrowPar] :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => RePreArrow k α1 β1 -> RePreArrow k γ δ -> RePreArrow k (α1, γ) (β1, δ)
- Control.Category.Constrained.Reified: [PreArrowRegroup] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => RePreArrow k (α, (β, γ)) ((α, β), γ)
+ Control.Category.Constrained.Reified: [PreArrowRegroup] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => RePreArrow k (α1, (β1, γ)) ((α1, β1), γ)
- Control.Category.Constrained.Reified: [PreArrowRegroup_] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => RePreArrow k ((α, β), γ) (α, (β, γ))
+ Control.Category.Constrained.Reified: [PreArrowRegroup_] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => RePreArrow k ((α1, β1), γ) (α1, (β1, γ))
- Control.Category.Constrained.Reified: [PreArrowSnd] :: ObjectPair k α β => RePreArrow k (α, β) β
+ Control.Category.Constrained.Reified: [PreArrowSnd] :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => RePreArrow k (α1, β) β
- Control.Category.Constrained.Reified: [PreArrowSwap] :: (ObjectPair k α β, ObjectPair k β α) => RePreArrow k (α, β) (β, α)
+ Control.Category.Constrained.Reified: [PreArrowSwap] :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => RePreArrow k (α1, β1) (β1, α1)
- Control.Category.Constrained.Reified: [PreArrowTerminal] :: Object k α => RePreArrow k α (UnitObject k)
+ Control.Category.Constrained.Reified: [PreArrowTerminal] :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α (UnitObject k)
- Control.Category.Constrained.Reified: [ReCartesian] :: k α β -> ReCartesian k α β
+ Control.Category.Constrained.Reified: [ReCartesian] :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCartesian k α β
- Control.Category.Constrained.Reified: [ReCategory] :: k α β -> ReCategory k α β
+ Control.Category.Constrained.Reified: [ReCategory] :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCategory k α β
- Control.Category.Constrained.Reified: [ReMorphism] :: k α β -> ReMorphism k α β
+ Control.Category.Constrained.Reified: [ReMorphism] :: forall (k :: Type -> Type -> Type) α β. k α β -> ReMorphism k α β
- Control.Category.Constrained.Reified: [RePreArrow] :: k α β -> RePreArrow k α β
+ Control.Category.Constrained.Reified: [RePreArrow] :: forall (k :: Type -> Type -> Type) α β. k α β -> RePreArrow k α β
- Control.Category.Constrained.Reified: [ReWellPointed] :: k α β -> ReWellPointed k α β
+ Control.Category.Constrained.Reified: [ReWellPointed] :: forall (k :: Type -> Type -> Type) α β. k α β -> ReWellPointed k α β
- Control.Category.Constrained.Reified: [WellPointedAttachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReWellPointed k α (α, u)
+ Control.Category.Constrained.Reified: [WellPointedAttachUnit] :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReWellPointed k α (α, u)
- Control.Category.Constrained.Reified: [WellPointedCompo] :: Object k β => ReWellPointed k α β -> ReWellPointed k β γ -> ReWellPointed k α γ
+ Control.Category.Constrained.Reified: [WellPointedCompo] :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReWellPointed k α β1 -> ReWellPointed k β1 β -> ReWellPointed k α β
- Control.Category.Constrained.Reified: [WellPointedConst] :: (Object k ν, ObjectPoint k α) => α -> ReWellPointed k ν α
+ Control.Category.Constrained.Reified: [WellPointedConst] :: forall (k :: Type -> Type -> Type) α β. (Object k α, ObjectPoint k β) => β -> ReWellPointed k α β
- Control.Category.Constrained.Reified: [WellPointedDetachUnit] :: (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReWellPointed k (α, u) α
+ Control.Category.Constrained.Reified: [WellPointedDetachUnit] :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReWellPointed k (β, u) β
- Control.Category.Constrained.Reified: [WellPointedFanout] :: (Object k α, ObjectPair k β γ) => ReWellPointed k α β -> ReWellPointed k α γ -> ReWellPointed k α (β, γ)
+ Control.Category.Constrained.Reified: [WellPointedFanout] :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => ReWellPointed k α β1 -> ReWellPointed k α γ -> ReWellPointed k α (β1, γ)
- Control.Category.Constrained.Reified: [WellPointedFst] :: ObjectPair k α β => ReWellPointed k (α, β) α
+ Control.Category.Constrained.Reified: [WellPointedFst] :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => ReWellPointed k (β, β1) β
- Control.Category.Constrained.Reified: [WellPointedId] :: Object k α => ReWellPointed k α α
+ Control.Category.Constrained.Reified: [WellPointedId] :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α α
- Control.Category.Constrained.Reified: [WellPointedPar] :: (ObjectPair k α γ, ObjectPair k β δ) => ReWellPointed k α β -> ReWellPointed k γ δ -> ReWellPointed k (α, γ) (β, δ)
+ Control.Category.Constrained.Reified: [WellPointedPar] :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReWellPointed k α1 β1 -> ReWellPointed k γ δ -> ReWellPointed k (α1, γ) (β1, δ)
- Control.Category.Constrained.Reified: [WellPointedRegroup] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReWellPointed k (α, (β, γ)) ((α, β), γ)
+ Control.Category.Constrained.Reified: [WellPointedRegroup] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReWellPointed k (α1, (β1, γ)) ((α1, β1), γ)
- Control.Category.Constrained.Reified: [WellPointedRegroup_] :: (ObjectPair k α β, ObjectPair k β γ, ObjectPair k α (β, γ), ObjectPair k (α, β) γ) => ReWellPointed k ((α, β), γ) (α, (β, γ))
+ Control.Category.Constrained.Reified: [WellPointedRegroup_] :: forall (k :: Type -> Type -> Type) α1 β1 γ. (ObjectPair k α1 β1, ObjectPair k β1 γ, ObjectPair k α1 (β1, γ), ObjectPair k (α1, β1) γ) => ReWellPointed k ((α1, β1), γ) (α1, (β1, γ))
- Control.Category.Constrained.Reified: [WellPointedSnd] :: ObjectPair k α β => ReWellPointed k (α, β) β
+ Control.Category.Constrained.Reified: [WellPointedSnd] :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => ReWellPointed k (α1, β) β
- Control.Category.Constrained.Reified: [WellPointedSwap] :: (ObjectPair k α β, ObjectPair k β α) => ReWellPointed k (α, β) (β, α)
+ Control.Category.Constrained.Reified: [WellPointedSwap] :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReWellPointed k (α1, β1) (β1, α1)
- Control.Category.Constrained.Reified: [WellPointedTerminal] :: Object k α => ReWellPointed k α (UnitObject k)
+ Control.Category.Constrained.Reified: [WellPointedTerminal] :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α (UnitObject k)
- Control.Category.Constrained.Reified: data ReCartesian (k :: * -> * -> *) (α :: *) (β :: *)
+ Control.Category.Constrained.Reified: data ReCartesian (k :: Type -> Type -> Type) α β
- Control.Category.Constrained.Reified: data ReCategory (k :: * -> * -> *) (α :: *) (β :: *)
+ Control.Category.Constrained.Reified: data ReCategory (k :: Type -> Type -> Type) α β
- Control.Category.Constrained.Reified: data ReMorphism (k :: * -> * -> *) (α :: *) (β :: *)
+ Control.Category.Constrained.Reified: data ReMorphism (k :: Type -> Type -> Type) α β
- Control.Category.Constrained.Reified: data RePreArrow (k :: * -> * -> *) (α :: *) (β :: *)
+ Control.Category.Constrained.Reified: data RePreArrow (k :: Type -> Type -> Type) α β
- Control.Category.Constrained.Reified: data ReWellPointed (k :: * -> * -> *) (α :: *) (β :: *)
+ Control.Category.Constrained.Reified: data ReWellPointed (k :: Type -> Type -> Type) α β
- Control.Category.Constrained.Reified.PolyPattern: class CRCategory k => CRCartesian k
+ Control.Category.Constrained.Reified.PolyPattern: class CRCategory k => CRCartesian (k :: Type -> Type -> Type)
- Control.Category.Constrained.Reified.PolyPattern: class Category k => CRCategory k where {
+ Control.Category.Constrained.Reified.PolyPattern: class Category k => CRCategory (k :: Type -> Type -> Type) where {
- Control.Category.Constrained.Reified.PolyPattern: class CRCartesian k => CRMorphism k
+ Control.Category.Constrained.Reified.PolyPattern: class CRCartesian k => CRMorphism (k :: Type -> Type -> Type)
- Control.Category.Constrained.Reified.PolyPattern: class CRCartesian k => CRPreArrow k
+ Control.Category.Constrained.Reified.PolyPattern: class CRCartesian k => CRPreArrow (k :: Type -> Type -> Type)
- Control.Category.Constrained.Reified.PolyPattern: class CRPreArrow k => CRWellPointed k
+ Control.Category.Constrained.Reified.PolyPattern: class CRPreArrow k => CRWellPointed (k :: Type -> Type -> Type)
- Control.Category.Constrained.Reified.PolyPattern: pattern Const :: forall k α β. CRWellPointed k => (Object k α, Object k β) => β -> k α β
+ Control.Category.Constrained.Reified.PolyPattern: pattern Const :: forall {k} {α} {β}. CRWellPointed k => (Object k α, Object k β) => β -> k α β
- Control.Category.Discrete: [Refl] :: Discrete a a
+ Control.Category.Discrete: [Refl] :: forall {k} (a :: k). Discrete a a
- Control.Category.Discrete: data Discrete a b
+ Control.Category.Discrete: data Discrete (a :: k) (b :: k)
- Control.Category.Hask: (!!) :: [a] -> Int -> a
+ Control.Category.Hask: (!!) :: HasCallStack => [a] -> Int -> a
- Control.Category.Hask: ($!) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
+ Control.Category.Hask: ($!) :: (a -> b) -> a -> b
- Control.Category.Hask: ($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
+ Control.Category.Hask: ($) :: (a -> b) -> a -> b
- Control.Category.Hask: cycle :: [a] -> [a]
+ Control.Category.Hask: cycle :: HasCallStack => [a] -> [a]
- Control.Category.Hask: error :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => [Char] -> a
+ Control.Category.Hask: error :: HasCallStack => [Char] -> a
- Control.Category.Hask: errorWithoutStackTrace :: forall (r :: RuntimeRep) (a :: TYPE r). [Char] -> a
+ Control.Category.Hask: errorWithoutStackTrace :: [Char] -> a
- Control.Category.Hask: head :: [a] -> a
+ Control.Category.Hask: head :: HasCallStack => [a] -> a
- Control.Category.Hask: infixl 4 <$>
+ Control.Category.Hask: infixl 4 <*
- Control.Category.Hask: infixl 7 *
+ Control.Category.Hask: infixl 7 /
- Control.Category.Hask: infixr 8 ^
+ Control.Category.Hask: infixr 8 ^^
- Control.Category.Hask: init :: [a] -> [a]
+ Control.Category.Hask: init :: HasCallStack => [a] -> [a]
- Control.Category.Hask: last :: [a] -> a
+ Control.Category.Hask: last :: HasCallStack => [a] -> a
- Control.Category.Hask: seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b
+ Control.Category.Hask: seq :: a -> b -> b
- Control.Category.Hask: tail :: [a] -> [a]
+ Control.Category.Hask: tail :: HasCallStack => [a] -> [a]
- Control.Category.Hask: undefined :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => a
+ Control.Category.Hask: undefined :: HasCallStack => a
- Control.Functor.Constrained: class (Category r, Category t, Object t (f (UnitObject r))) => Functor f r t | f r -> t, f t -> r
+ Control.Functor.Constrained: class (Category r, Category t) => Functor (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type) | f r -> t, f t -> r
- Control.Functor.Constrained: class (CoCartesian r, Cartesian t, Functor f r t, Object t (f (ZeroObject r))) => SumToProduct f r t
+ Control.Functor.Constrained: class (CoCartesian r, Cartesian t, Functor f r t, Object t f ZeroObject r) => SumToProduct (f :: Type -> Type) (r :: Type -> Type -> Type) (t :: Type -> Type -> Type)
- Control.Functor.Constrained: constrainedFmap :: (Category r, Category t, o a, o b, o (f a), o (f b)) => (r a b -> t (f a) (f b)) -> (o ⊢ r) a b -> (o ⊢ t) (f a) (f b)
+ Control.Functor.Constrained: constrainedFmap :: forall r t (o :: Type -> Constraint) a b f. (Category r, Category t, o a, o b, o (f a), o (f b)) => (r a b -> t (f a) (f b)) -> (o ⊢ r) a b -> (o ⊢ t) (f a) (f b)
- Control.Monad.Constrained: (<=<) :: (Monad m k, Object k a, Object k b, Object k c, Object k (m b), Object k (m c), Object k (m (m c))) => (b `k` m c) -> (a `k` m b) -> a `k` m c
+ Control.Monad.Constrained: (<=<) :: (Monad m k, Object k a, Object k b, Object k c, Object k (m b), Object k (m c), Object k (m (m c))) => k b (m c) -> k a (m b) -> k a (m c)
- Control.Monad.Constrained: (>=>) :: (Monad m k, Object k a, Object k b, Object k c, Object k (m b), Object k (m c), Object k (m (m c))) => (a `k` m b) -> (b `k` m c) -> a `k` m c
+ Control.Monad.Constrained: (>=>) :: (Monad m k, Object k a, Object k b, Object k c, Object k (m b), Object k (m c), Object k (m (m c))) => k a (m b) -> k b (m c) -> k a (m c)
- Control.Monad.Constrained: Kleisli :: k a (m b) -> Kleisli m k a b
+ Control.Monad.Constrained: Kleisli :: k a (m b) -> Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b
- Control.Monad.Constrained: [runKleisli] :: Kleisli m k a b -> k a (m b)
+ Control.Monad.Constrained: [runKleisli] :: Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b -> k a (m b)
- Control.Monad.Constrained: class (Applicative m k k, Object k (m (UnitObject k)), Object k (m (m (UnitObject k)))) => Monad m k
+ Control.Monad.Constrained: class (Applicative m k k, Object k m UnitObject k, Object k m m UnitObject k) => Monad (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Monad.Constrained: class (MonadPlus m k) => MonadFail m k
+ Control.Monad.Constrained: class MonadPlus m k => MonadFail (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Monad.Constrained: class (MonadZero m k) => MonadPlus m k
+ Control.Monad.Constrained: class MonadZero m k => MonadPlus (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Monad.Constrained: class (Monad m k) => MonadZero m k
+ Control.Monad.Constrained: class Monad m k => MonadZero (m :: Type -> Type) (k :: Type -> Type -> Type)
- Control.Monad.Constrained: filterM :: (PreArrow k, Monad m k, SumToProduct c k k, EndoTraversable c k, ObjectPair k Bool a, Object k (c a), Object k (m (c a)), ObjectPair k (Bool, a) (c (Bool, a)), ObjectPair k (m Bool) (m a), ObjectPair k (m (Bool, a)) (m (c (Bool, a))), TraversalObject k c (Bool, a)) => (a `k` m Bool) -> c a `k` m (c a)
+ Control.Monad.Constrained: filterM :: (PreArrow k, Monad m k, SumToProduct c k k, EndoTraversable c k, ObjectPair k Bool a, Object k (c a), Object k (m (c a)), ObjectPair k (Bool, a) (c (Bool, a)), ObjectPair k (m Bool) (m a), ObjectPair k (m (Bool, a)) (m (c (Bool, a))), TraversalObject k c (Bool, a)) => k a (m Bool) -> k (c a) (m (c a))
- Control.Monad.Constrained: fmzero :: (MonadZero m k, Object k a, Object k (m a)) => UnitObject k `k` m a
+ Control.Monad.Constrained: fmzero :: (MonadZero m k, Object k a, Object k (m a)) => k (UnitObject k) (m a)
- Control.Monad.Constrained: forM :: forall s t k m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> (a `l` m b) -> m (t b)
+ Control.Monad.Constrained: forM :: forall s t (k :: Type -> Type -> Type) m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> l a (m b) -> m (t b)
- Control.Monad.Constrained: forM_ :: forall t k l f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> (a `k` f b) -> f uk
+ Control.Monad.Constrained: forM_ :: forall t k (l :: Type -> Type -> Type) f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> k a (f b) -> f uk
- Control.Monad.Constrained: forever :: (Monad m k, Function k, Arrow k (->), Object k a, Object k b, Object k (m a), Object k (m (m a)), ObjectPoint k (m b), Object k (m (m b))) => m a `k` m b
+ Control.Monad.Constrained: forever :: (Monad m k, Function k, Arrow k (->), Object k a, Object k b, Object k (m a), Object k (m (m a)), ObjectPoint k (m b), Object k (m (m b))) => k (m a) (m b)
- Control.Monad.Constrained: guard :: (MonadPlus m k, Arrow k (->), Function k, UnitObject k ~ (), Object k Bool) => Bool `k` m ()
+ Control.Monad.Constrained: guard :: (MonadPlus m k, Arrow k (->), Function k, UnitObject k ~ (), Object k Bool) => k Bool (m ())
- Control.Monad.Constrained: join :: (Monad m k, Object k a, Object k (m a), Object k (m (m a))) => m (m a) `k` m a
+ Control.Monad.Constrained: join :: (Monad m k, Object k a, Object k (m a), Object k (m (m a))) => k (m (m a)) (m a)
- Control.Monad.Constrained: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => (a `k` m b) -> t a `k` m (t b)
+ Control.Monad.Constrained: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => k a (m b) -> k (t a) (m (t b))
- Control.Monad.Constrained: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => (a `k` f b) -> t a `k` f u
+ Control.Monad.Constrained: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => k a (f b) -> k (t a) (f u)
- Control.Monad.Constrained: newtype Kleisli m k a b
+ Control.Monad.Constrained: newtype Kleisli (m :: Type -> Type) (k :: Type -> Type -> Type) a b
- Control.Monad.Constrained: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => t (f a) `k` f (t a)
+ Control.Monad.Constrained: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => k (t (f a)) (f (t a))
- Control.Monad.Constrained: sequence_ :: forall t k l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => t (m a) `l` m uk
+ Control.Monad.Constrained: sequence_ :: forall t (k :: Type -> Type -> Type) l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => l (t (m a)) (m uk)
- Control.Monad.Constrained: unless :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> m u `k` m u
+ Control.Monad.Constrained: unless :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> k (m u) (m u)
- Control.Monad.Constrained: void :: (Monad m k, PreArrow k, Object k a, Object k (m a), ObjectPair k a u, u ~ UnitObject k) => m a `k` m (UnitObject k)
+ Control.Monad.Constrained: void :: (Monad m k, PreArrow k, Object k a, Object k (m a), ObjectPair k a u, u ~ UnitObject k) => k (m a) (m (UnitObject k))
- Control.Monad.Constrained: when :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> m u `k` m u
+ Control.Monad.Constrained: when :: (Monad m k, PreArrow k, u ~ UnitObject k, ObjectPair k (m u) u) => Bool -> k (m u) (m u)
- Data.Foldable.Constrained: class (Functor t k l) => Foldable t k l
+ Data.Foldable.Constrained: class Functor t k l => Foldable (t :: Type -> Type) (k :: Type -> Type -> Type) (l :: Type -> Type -> Type)
- Data.Foldable.Constrained: concatMap :: (Foldable f k l, Object k a, Object k [b], Object l (f a), Object l [b]) => (a `k` [b]) -> f a `l` [b]
+ Data.Foldable.Constrained: concatMap :: (Foldable f k l, Object k a, Object k [b], Object l (f a), Object l [b]) => k a [b] -> l (f a) [b]
- Data.Foldable.Constrained: fold :: (Foldable t k k, Monoid m, Semigroup m, Object k m, Object k (t m)) => t m `k` m
+ Data.Foldable.Constrained: fold :: (Foldable t k k, Monoid m, Semigroup m, Object k m, Object k (t m)) => k (t m) m
- Data.Foldable.Constrained: foldMap :: (Foldable t k l, Object k a, Object l (t a), Semigroup m, Monoid m, Object k m, Object l m) => (a `k` m) -> t a `l` m
+ Data.Foldable.Constrained: foldMap :: (Foldable t k l, Object k a, Object l (t a), Semigroup m, Monoid m, Object k m, Object l m) => k a m -> l (t a) m
- Data.Foldable.Constrained: forM_ :: forall t k l f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> (a `k` f b) -> f uk
+ Data.Foldable.Constrained: forM_ :: forall t k (l :: Type -> Type -> Type) f a b uk ul. (Foldable t k l, Monoidal f l l, Monoidal f k k, Function l, Arrow k (->), Arrow l (->), ul ~ UnitObject l, uk ~ UnitObject k, uk ~ ul, ObjectPair l ul ul, ObjectPair l (f ul) (f ul), ObjectPair l (f ul) (t a), ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair l (f ul) a, ObjectPair k b (f b), ObjectPair k b ul, ObjectPair k uk uk, ObjectPair k (f uk) a, ObjectPair k (f uk) (f uk)) => t a -> k a (f b) -> f uk
- Data.Foldable.Constrained: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => (a `k` f b) -> t a `k` f u
+ Data.Foldable.Constrained: mapM_ :: forall t k o f a b u. (Foldable t k k, WellPointed k, Monoidal f k k, u ~ UnitObject k, ObjectPair k (f u) (t a), ObjectPair k (f u) a, ObjectPair k u (t a), ObjectPair k (t a) u, ObjectPair k (f u) (f u), ObjectPair k u u, ObjectPair k b u, Object k (f b)) => k a (f b) -> k (t a) (f u)
- Data.Foldable.Constrained: sequence_ :: forall t k l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => t (m a) `l` m uk
+ Data.Foldable.Constrained: sequence_ :: forall t (k :: Type -> Type -> Type) l m a b uk ul. (Foldable t k l, Arrow k (->), Arrow l (->), uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul, Monoidal m k k, Monoidal m l l, ObjectPair k a uk, ObjectPair k (t (m a)) uk, ObjectPair k uk uk, ObjectPair k (m uk) (m uk), ObjectPair k (t (m a)) ul, ObjectPair l (m ul) (t (m a)), ObjectPair l ul (t (m a)), ObjectPair l (m uk) (t (m a)), ObjectPair l (t (m a)) ul, ObjectPair k (m uk) (m a)) => l (t (m a)) (m uk)
- Data.Foldable.Constrained: traverse_ :: forall t k l o f a b uk ul. (Foldable t k l, PreArrow k, PreArrow l, Monoidal f l l, Monoidal f k k, ObjectPair l (f ul) (t a), ObjectPair k (f ul) a, ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair k b ul, Object k (f b), ObjectPair k (f ul) (f ul), ObjectPair k ul ul, uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul) => (a `k` f b) -> t a `l` f ul
+ Data.Foldable.Constrained: traverse_ :: forall t k l o f a b uk ul. (Foldable t k l, PreArrow k, PreArrow l, Monoidal f l l, Monoidal f k k, ObjectPair l (f ul) (t a), ObjectPair k (f ul) a, ObjectPair l ul (t a), ObjectPair l (t a) ul, ObjectPair k b ul, Object k (f b), ObjectPair k (f ul) (f ul), ObjectPair k ul ul, uk ~ UnitObject k, ul ~ UnitObject l, uk ~ ul) => k a (f b) -> l (t a) (f ul)
- Data.Traversable.Constrained: class (Category k, Category l, Functor s l l, Functor t k k) => Traversable s t k l | s k l -> t, t k l -> s, s t k -> l, s t l -> k where {
+ Data.Traversable.Constrained: class (Category k, Category l, Functor s l l, Functor t k k) => Traversable (s :: Type -> Type) (t :: Type -> Type) (k :: Type -> Type -> Type) (l :: Type -> Type -> Type) | s k l -> t, t k l -> s, s t k -> l, s t l -> k where {
- Data.Traversable.Constrained: forM :: forall s t k m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> (a `l` m b) -> m (t b)
+ Data.Traversable.Constrained: forM :: forall s t (k :: Type -> Type -> Type) m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> l a (m b) -> m (t b)
- Data.Traversable.Constrained: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => (a `k` m b) -> t a `k` m (t b)
+ Data.Traversable.Constrained: mapM :: (Traversable s t k l, k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => k a (m b) -> k (t a) (m (t b))
- Data.Traversable.Constrained: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => t (f a) `k` f (t a)
+ Data.Traversable.Constrained: sequence :: (Traversable s t k l, k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => k (t (f a)) (f (t a))
- Data.Traversable.Constrained: traverse :: (Traversable s t k l, Monoidal f k l, Object l a, Object l (s a), ObjectPair k b (t b), ObjectPair l (f b) (f (t b)), TraversalObject k t b) => (a `l` f b) -> s a `l` f (t b)
+ Data.Traversable.Constrained: traverse :: (Traversable s t k l, Monoidal f k l, Object l a, Object l (s a), ObjectPair k b (t b), ObjectPair l (f b) (f (t b)), TraversalObject k t b) => l a (f b) -> l (s a) (f (t b))
- Data.Traversable.Constrained: type EndoTraversable t k = Traversable t t k k
+ Data.Traversable.Constrained: type EndoTraversable (t :: Type -> Type) (k :: Type -> Type -> Type) = Traversable t t k k
- Data.Traversable.Constrained: type TraversalObject k t b = ();
+ Data.Traversable.Constrained: type TraversalObject k :: Type -> Type -> Type t :: Type -> Type b = ();
Files
- Control/Applicative/Constrained.hs +3/−1
- Control/Arrow/Constrained.hs +23/−0
- Control/Category/Constrained.hs +25/−0
- Control/Functor/Constrained.hs +5/−6
- Control/Monad/Constrained.hs +1/−0
- Data/CategoryObject/Product.hs +49/−0
- Data/Foldable/Constrained.hs +1/−2
- Data/Traversable/Constrained.hs +1/−2
- constrained-categories.cabal +3/−2
Control/Applicative/Constrained.hs view
@@ -29,6 +29,7 @@ ) where +import Control.Category.Constrained import Control.Functor.Constrained import Control.Arrow.Constrained @@ -36,7 +37,8 @@ import qualified Control.Category.Hask as Hask -class (Functor f r t, Cartesian r, Cartesian t) => Monoidal f r t where+class (Functor f r t, Cartesian r, Cartesian t, Object t (f (UnitObject r)))+ => Monoidal f r t where pureUnit :: UnitObject t `t` f (UnitObject r) fzipWith :: (ObjectPair r a b, Object r c, ObjectPair t (f a) (f b), Object t (f c)) => r (a, b) c -> t (f a, f b) (f c)
Control/Arrow/Constrained.hs view
@@ -33,6 +33,7 @@ {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}@@ -74,6 +75,7 @@ import GHC.Exts (Constraint) import Data.Tagged import Data.Void+import Data.CategoryObject.Product import Data.Coerce import Data.Type.Coercion@@ -306,6 +308,27 @@ globalElement = Hask.const unit = Hask.pure () const = Hask.const++instance (Morphism k, Morphism l) => Morphism (k×l) where+ (f:***:g) *** (h:***:i) = (f***h) :***: (g***i)+instance (PreArrow k, PreArrow l) => PreArrow (k×l) where+ (f:***:g) &&& (h:***:i) = (f&&&h) :***: (g&&&i)+ terminal = terminal :***: terminal+ fst = fst :***: fst+ snd = snd :***: snd++prodCatUnit :: ∀ k l . (WellPointed k, WellPointed l)+ => Tagged ((k×l) (ProductCatObj (UnitObject k) (UnitObject l))+ (ProductCatObj (UnitObject k) (UnitObject l)))+ (ProductCatObj (UnitObject k) (UnitObject l))+prodCatUnit = Tagged $ ProductCatObj uk ul+ where Tagged uk = unit :: Tagged (k (UnitObject k) (UnitObject k)) (UnitObject k)+ Tagged ul = unit :: Tagged (l (UnitObject l) (UnitObject l)) (UnitObject l)++instance (WellPointed k, WellPointed l) => WellPointed (k×l) where+ type PointObject (k×l) o = (PointObject k (LFactor o), PointObject l (RFactor o))+ unit = prodCatUnit+ const c = const (lfactorProj c) :***: const (rfactorProj c) constrainedArr :: (Category k, Category a, o b, o c ) => ( k b c -> a b c ) -> k b c -> (o⊢a) b c
Control/Category/Constrained.hs view
@@ -42,6 +42,8 @@ , type (⊢)() , constrained, unconstrained , ConstrainedFunction+ -- * Product categories+ , ProductCategory(..), type (×)() -- * Global-element proxies , HasAgent (..) , genericAlg, genericAgentMap@@ -57,6 +59,7 @@ import Data.Tagged import Data.Monoid import Data.Void+import Data.CategoryObject.Product #if MIN_VERSION_base(4,9,0) import Data.Kind (Type) #endif@@ -487,3 +490,25 @@ instance Category Coercion where id = Hask.id (.) = (Hask..)+++infixr 3 :***:++data ProductCategory k l p q = k (LFactor p) (LFactor q) :***: l (RFactor p) (RFactor q)++type (×) = ProductCategory++instance (Category k, Category l) => Category (k×l) where+ type Object (k×l) o = (IsProduct o, Object k (LFactor o), Object l (RFactor o))+ id = id:***:id+ (f:***:g) . (h:***:i) = (f.h):***:(g.i)++instance (Cartesian k, Cartesian l) => Cartesian (k×l) where+ type UnitObject (k×l) = ProductCatObj (UnitObject k) (UnitObject l)+ type PairObjects (k×l) a b = ( PairObjects k (LFactor a) (LFactor b)+ , PairObjects l (RFactor a) (RFactor b) )+ swap = swap :***: swap+ attachUnit = attachUnit :***: attachUnit+ detachUnit = detachUnit :***: detachUnit+ regroup = regroup :***: regroup+ regroup' = regroup' :***: regroup'
Control/Functor/Constrained.hs view
@@ -19,9 +19,8 @@ module Control.Functor.Constrained- ( module Control.Category.Constrained- -- * Functors- , Functor(..)+ ( -- * Functors+ Functor(..) , (<$>) , constrainedFmap -- * [Co]product mapping@@ -42,7 +41,7 @@ import Control.Category.Discrete -class ( Category r, Category t, Object t (f (UnitObject r)) )+class ( Category r, Category t ) => Functor f r t | f r -> t, f t -> r where fmap :: (Object r a, Object t (f a), Object r b, Object t (f b)) => r a b -> t (f a) (f b)@@ -94,10 +93,10 @@ -> (o⊢r) a b -> (o⊢t) (f a) (f b) constrainedFmap q = constrained . q . unconstrained -instance (Functor [] k k, o [UnitObject k]) => Functor [] (o⊢k) (o⊢k) where+instance (Functor [] k k) => Functor [] (o⊢k) (o⊢k) where fmap (ConstrainedMorphism f) = ConstrainedMorphism $ fmap f -instance (o (), o [()], o Void, o [Void]) => SumToProduct [] (o⊢(->)) (o⊢(->)) where+instance (o (), o Void, o [Void]) => SumToProduct [] (o⊢(->)) (o⊢(->)) where sum2product = ConstrainedMorphism sum2product mapEither (ConstrainedMorphism f) = ConstrainedMorphism $ mapEither f filter (ConstrainedMorphism f) = ConstrainedMorphism $ filter f
Control/Monad/Constrained.hs view
@@ -36,6 +36,7 @@ ) where +import Control.Category.Constrained import Control.Applicative.Constrained import Data.Foldable.Constrained import Data.Traversable.Constrained
+ Data/CategoryObject/Product.hs view
@@ -0,0 +1,49 @@+-- |+-- Module : Data.CategoryObject.Product+-- Copyright : (c) Justus Sagemüller 2021+-- License : GPL v3+-- +-- Maintainer : (@) jsag $ hvl.no+-- Stability : experimental+-- Portability : portable+-- ++{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.CategoryObject.Product where+ +import Data.Semigroup+import Data.Monoid hiding ((<>))++data ProductCatObj a b = ProductCatObj a b++type family LFactor t where+ LFactor (ProductCatObj l r) = l+ LFactor (a,b) = (LFactor a, LFactor b)++type family RFactor t where+ RFactor (ProductCatObj l r) = r+ RFactor (a,b) = (RFactor a, RFactor b)++class IsProduct t where+ lfactorProj :: t -> LFactor t+ rfactorProj :: t -> RFactor t++instance IsProduct (ProductCatObj a b) where+ lfactorProj (ProductCatObj x _) = x+ rfactorProj (ProductCatObj _ y) = y++instance (IsProduct a, IsProduct b) => IsProduct (a,b) where+ lfactorProj (x,y) = (lfactorProj x, lfactorProj y)+ rfactorProj (x,y) = (rfactorProj x, rfactorProj y)+++instance (Semigroup a, Semigroup b) => Semigroup (ProductCatObj a b) where+ ProductCatObj x y <> ProductCatObj w z = ProductCatObj (x<>w) (y<>z)++instance (Monoid a, Monoid b) => Monoid (ProductCatObj a b) where+ mempty = ProductCatObj mempty mempty+ mappend (ProductCatObj x y) (ProductCatObj w z)+ = ProductCatObj (mappend x w) (mappend y z)
Data/Foldable/Constrained.hs view
@@ -19,8 +19,7 @@ module Data.Foldable.Constrained- ( module Control.Category.Constrained - , Foldable(..)+ ( Foldable(..) , fold , traverse_, mapM_, forM_, sequence_ , concatMap
Data/Traversable/Constrained.hs view
@@ -19,8 +19,7 @@ module Data.Traversable.Constrained- ( module Control.Applicative.Constrained - , Traversable(..)+ ( Traversable(..) , forM , EndoTraversable , haskTraverse
constrained-categories.cabal view
@@ -1,5 +1,5 @@ Name: constrained-categories-Version: 0.4.1.0+Version: 0.4.2.0 Category: control Synopsis: Constrained clones of the category-theory type classes, using ConstraintKinds. Description: Haskell has, and makes great use of, powerful facilities from category@@ -46,7 +46,7 @@ , semigroups , contravariant , fail- , trivial-constraint >= 0.4 && < 0.5+ , trivial-constraint >= 0.4 && < 0.8 Default-Extensions: ConstraintKinds TypeFamilies FlexibleInstances@@ -64,4 +64,5 @@ Control.Category.Constrained.Reified.PolyPattern Data.Foldable.Constrained Data.Traversable.Constrained+ Data.CategoryObject.Product