| Copyright | (c) 2016 Justus Sagemüller |
|---|---|
| License | GPL v3 (see COPYING) |
| Maintainer | (@) jsag $ hvl.no |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Control.Category.Constrained.Reified
Description
GADTs that mirror the class hierarchy from Category to (at the moment) Cartesian,
reifying all the available “free” composition operations.
These can be used as a “trivial base case“ for all kinds of categories: it turns out these basic operations are often not so trivial to implement, or only possible with stronger constraints than you'd like. For instance, the category of affine mappings can only be implemented directly as a category on vector spaces, because the identity mapping has zero constant offset.
By leaving the free compositions reified to runtime syntax trees, this problem
can be avoided. In other applications, you may not need these cases,
but can still benefit from them for optimisation (composition with id is
always trivial, and so on).
Synopsis
- data ReCategory (k :: Type -> Type -> Type) α β where
- ReCategory :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCategory k α β
- CategoryId :: forall (k :: Type -> Type -> Type) α. Object k α => ReCategory k α α
- CategoryCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCategory k α β1 -> ReCategory k β1 β -> ReCategory k α β
- data ReCartesian (k :: Type -> Type -> Type) α β where
- ReCartesian :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCartesian k α β
- CartesianId :: forall (k :: Type -> Type -> Type) α. Object k α => ReCartesian k α α
- CartesianCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCartesian k α β1 -> ReCartesian k β1 β -> ReCartesian k α β
- CartesianSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReCartesian k (α1, β1) (β1, α1)
- CartesianAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReCartesian k α (α, u)
- CartesianDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReCartesian k (β, u) β
- 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), γ)
- 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, γ))
- data ReMorphism (k :: Type -> Type -> Type) α β where
- ReMorphism :: forall (k :: Type -> Type -> Type) α β. k α β -> ReMorphism k α β
- MorphismId :: forall (k :: Type -> Type -> Type) α. Object k α => ReMorphism k α α
- MorphismCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReMorphism k α β1 -> ReMorphism k β1 β -> ReMorphism k α β
- MorphismSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReMorphism k (α1, β1) (β1, α1)
- MorphismAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReMorphism k α (α, u)
- MorphismDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReMorphism k (β, u) β
- 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), γ)
- 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, γ))
- MorphismPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReMorphism k α1 β1 -> ReMorphism k γ δ -> ReMorphism k (α1, γ) (β1, δ)
- data RePreArrow (k :: Type -> Type -> Type) α β where
- RePreArrow :: forall (k :: Type -> Type -> Type) α β. k α β -> RePreArrow k α β
- PreArrowId :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α α
- PreArrowCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => RePreArrow k α β1 -> RePreArrow k β1 β -> RePreArrow k α β
- PreArrowSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => RePreArrow k (α1, β1) (β1, α1)
- PreArrowAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => RePreArrow k α (α, u)
- PreArrowDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => RePreArrow k (β, u) β
- 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), γ)
- 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, γ))
- PreArrowPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => RePreArrow k α1 β1 -> RePreArrow k γ δ -> RePreArrow k (α1, γ) (β1, δ)
- PreArrowFanout :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => RePreArrow k α β1 -> RePreArrow k α γ -> RePreArrow k α (β1, γ)
- PreArrowTerminal :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α (UnitObject k)
- PreArrowFst :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => RePreArrow k (β, β1) β
- PreArrowSnd :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => RePreArrow k (α1, β) β
- data ReWellPointed (k :: Type -> Type -> Type) α β where
- ReWellPointed :: forall (k :: Type -> Type -> Type) α β. k α β -> ReWellPointed k α β
- WellPointedId :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α α
- WellPointedCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReWellPointed k α β1 -> ReWellPointed k β1 β -> ReWellPointed k α β
- WellPointedSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReWellPointed k (α1, β1) (β1, α1)
- WellPointedAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReWellPointed k α (α, u)
- WellPointedDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReWellPointed k (β, u) β
- 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), γ)
- 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, γ))
- WellPointedPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReWellPointed k α1 β1 -> ReWellPointed k γ δ -> ReWellPointed k (α1, γ) (β1, δ)
- WellPointedFanout :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => ReWellPointed k α β1 -> ReWellPointed k α γ -> ReWellPointed k α (β1, γ)
- WellPointedTerminal :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α (UnitObject k)
- WellPointedFst :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => ReWellPointed k (β, β1) β
- WellPointedSnd :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => ReWellPointed k (α1, β) β
- WellPointedConst :: forall (k :: Type -> Type -> Type) α β. (Object k α, ObjectPoint k β) => β -> ReWellPointed k α β
Reified versions of the category classes
data ReCategory (k :: Type -> Type -> Type) α β where Source #
Constructors
| ReCategory :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCategory k α β | |
| CategoryId :: forall (k :: Type -> Type -> Type) α. Object k α => ReCategory k α α | |
| CategoryCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCategory k α β1 -> ReCategory k β1 β -> ReCategory k α β |
Instances
data ReCartesian (k :: Type -> Type -> Type) α β where Source #
Constructors
| ReCartesian :: forall (k :: Type -> Type -> Type) α β. k α β -> ReCartesian k α β | |
| CartesianId :: forall (k :: Type -> Type -> Type) α. Object k α => ReCartesian k α α | |
| CartesianCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReCartesian k α β1 -> ReCartesian k β1 β -> ReCartesian k α β | |
| CartesianSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReCartesian k (α1, β1) (β1, α1) | |
| CartesianAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReCartesian k α (α, u) | |
| CartesianDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReCartesian k (β, u) β | |
| 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), γ) | |
| 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, γ)) |
Instances
| Cartesian k => Category (ReCartesian k :: Type -> Type -> Type) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods id :: Object (ReCartesian k) a => ReCartesian k a a Source # (.) :: (Object (ReCartesian k) a, Object (ReCartesian k) b, Object (ReCartesian k) c) => ReCartesian k b c -> ReCartesian k a b -> ReCartesian k a c Source # | |||||
| Cartesian k => Cartesian (ReCartesian k) Source # | |||||
Defined in Control.Category.Constrained.Reified Associated Types
Methods swap :: (ObjectPair (ReCartesian k) a b, ObjectPair (ReCartesian k) b a) => ReCartesian k (a, b) (b, a) Source # attachUnit :: (unit ~ UnitObject (ReCartesian k), ObjectPair (ReCartesian k) a unit) => ReCartesian k a (a, unit) Source # detachUnit :: (unit ~ UnitObject (ReCartesian k), ObjectPair (ReCartesian k) a unit) => ReCartesian k (a, unit) a Source # regroup :: (ObjectPair (ReCartesian k) a b, ObjectPair (ReCartesian k) b c, ObjectPair (ReCartesian k) a (b, c), ObjectPair (ReCartesian k) (a, b) c) => ReCartesian k (a, (b, c)) ((a, b), c) Source # regroup' :: (ObjectPair (ReCartesian k) a b, ObjectPair (ReCartesian k) b c, ObjectPair (ReCartesian k) a (b, c), ObjectPair (ReCartesian k) (a, b) c) => ReCartesian k ((a, b), c) (a, (b, c)) Source # | |||||
| (HasAgent k, Cartesian k) => HasAgent (ReCartesian k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods alg :: (Object (ReCartesian k) a, Object (ReCartesian k) b) => (forall q. Object (ReCartesian k) q => AgentVal (ReCartesian k) q a -> AgentVal (ReCartesian k) q b) -> ReCartesian k a b Source # ($~) :: (Object (ReCartesian k) a, Object (ReCartesian k) b, Object (ReCartesian k) c) => ReCartesian k b c -> AgentVal (ReCartesian k) a b -> AgentVal (ReCartesian k) a c Source # | |||||
| Cartesian k => CRCartesian (ReCartesian k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_swap :: ReCartesian k α β -> SwapPattern (ReCartesian k) α β Source # match_attachUnit :: ReCartesian k α β -> AttachUnitPattern (ReCartesian k) α β Source # match_detachUnit :: ReCartesian k α β -> DetachUnitPattern (ReCartesian k) α β Source # match_regroup :: ReCartesian k α β -> RegroupPattern (ReCartesian k) α β Source # match_regroup' :: ReCartesian k α β -> Regroup'Pattern (ReCartesian k) α β Source # | |||||
| Cartesian k => CRCategory (ReCartesian k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Associated Types
Methods fromSpecific :: SpecificCat (ReCartesian k) α β -> ReCartesian k α β Source # match_concrete :: ReCartesian k α β -> Maybe (SpecificCat (ReCartesian k) α β) Source # match_id :: ReCartesian k α β -> IdPattern (ReCartesian k) α β Source # match_compose :: ReCartesian k α β -> CompoPattern (ReCartesian k) α β Source # | |||||
| Cartesian k => EnhancedCat (ReCartesian k) k Source # | |||||
Defined in Control.Category.Constrained.Reified Methods arr :: (Object k b, Object k c, Object (ReCartesian k) b, Object (ReCartesian k) c) => k b c -> ReCartesian k b c Source # | |||||
| type Object (ReCartesian k :: Type -> Type -> Type) (a :: Type) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type UnitObject (ReCartesian k) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type SpecificCat (ReCartesian k) Source # | |||||
| type AgentVal (ReCartesian k) α ω Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type PairObjects (ReCartesian k) α β Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
data ReMorphism (k :: Type -> Type -> Type) α β where Source #
Constructors
| ReMorphism :: forall (k :: Type -> Type -> Type) α β. k α β -> ReMorphism k α β | |
| MorphismId :: forall (k :: Type -> Type -> Type) α. Object k α => ReMorphism k α α | |
| MorphismCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReMorphism k α β1 -> ReMorphism k β1 β -> ReMorphism k α β | |
| MorphismSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReMorphism k (α1, β1) (β1, α1) | |
| MorphismAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReMorphism k α (α, u) | |
| MorphismDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReMorphism k (β, u) β | |
| 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), γ) | |
| 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, γ)) | |
| MorphismPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReMorphism k α1 β1 -> ReMorphism k γ δ -> ReMorphism k (α1, γ) (β1, δ) |
Instances
| Morphism k => Category (ReMorphism k :: Type -> Type -> Type) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods id :: Object (ReMorphism k) a => ReMorphism k a a Source # (.) :: (Object (ReMorphism k) a, Object (ReMorphism k) b, Object (ReMorphism k) c) => ReMorphism k b c -> ReMorphism k a b -> ReMorphism k a c Source # | |||||
| Morphism k => Morphism (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods first :: (ObjectPair (ReMorphism k) b d, ObjectPair (ReMorphism k) c d) => ReMorphism k b c -> ReMorphism k (b, d) (c, d) Source # second :: (ObjectPair (ReMorphism k) d b, ObjectPair (ReMorphism k) d c) => ReMorphism k b c -> ReMorphism k (d, b) (d, c) Source # (***) :: (ObjectPair (ReMorphism k) b b', ObjectPair (ReMorphism k) c c') => ReMorphism k b c -> ReMorphism k b' c' -> ReMorphism k (b, b') (c, c') Source # | |||||
| Morphism k => Cartesian (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified Associated Types
Methods swap :: (ObjectPair (ReMorphism k) a b, ObjectPair (ReMorphism k) b a) => ReMorphism k (a, b) (b, a) Source # attachUnit :: (unit ~ UnitObject (ReMorphism k), ObjectPair (ReMorphism k) a unit) => ReMorphism k a (a, unit) Source # detachUnit :: (unit ~ UnitObject (ReMorphism k), ObjectPair (ReMorphism k) a unit) => ReMorphism k (a, unit) a Source # regroup :: (ObjectPair (ReMorphism k) a b, ObjectPair (ReMorphism k) b c, ObjectPair (ReMorphism k) a (b, c), ObjectPair (ReMorphism k) (a, b) c) => ReMorphism k (a, (b, c)) ((a, b), c) Source # regroup' :: (ObjectPair (ReMorphism k) a b, ObjectPair (ReMorphism k) b c, ObjectPair (ReMorphism k) a (b, c), ObjectPair (ReMorphism k) (a, b) c) => ReMorphism k ((a, b), c) (a, (b, c)) Source # | |||||
| (HasAgent k, Morphism k) => HasAgent (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods alg :: (Object (ReMorphism k) a, Object (ReMorphism k) b) => (forall q. Object (ReMorphism k) q => AgentVal (ReMorphism k) q a -> AgentVal (ReMorphism k) q b) -> ReMorphism k a b Source # ($~) :: (Object (ReMorphism k) a, Object (ReMorphism k) b, Object (ReMorphism k) c) => ReMorphism k b c -> AgentVal (ReMorphism k) a b -> AgentVal (ReMorphism k) a c Source # | |||||
| Morphism k => CRCartesian (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_swap :: ReMorphism k α β -> SwapPattern (ReMorphism k) α β Source # match_attachUnit :: ReMorphism k α β -> AttachUnitPattern (ReMorphism k) α β Source # match_detachUnit :: ReMorphism k α β -> DetachUnitPattern (ReMorphism k) α β Source # match_regroup :: ReMorphism k α β -> RegroupPattern (ReMorphism k) α β Source # match_regroup' :: ReMorphism k α β -> Regroup'Pattern (ReMorphism k) α β Source # | |||||
| Morphism k => CRCategory (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Associated Types
Methods fromSpecific :: SpecificCat (ReMorphism k) α β -> ReMorphism k α β Source # match_concrete :: ReMorphism k α β -> Maybe (SpecificCat (ReMorphism k) α β) Source # match_id :: ReMorphism k α β -> IdPattern (ReMorphism k) α β Source # match_compose :: ReMorphism k α β -> CompoPattern (ReMorphism k) α β Source # | |||||
| Morphism k => CRMorphism (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_par :: ReMorphism k α β -> ParPattern (ReMorphism k) α β Source # | |||||
| Morphism k => EnhancedCat (ReMorphism k) k Source # | |||||
Defined in Control.Category.Constrained.Reified Methods arr :: (Object k b, Object k c, Object (ReMorphism k) b, Object (ReMorphism k) c) => k b c -> ReMorphism k b c Source # | |||||
| type Object (ReMorphism k :: Type -> Type -> Type) (a :: Type) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type UnitObject (ReMorphism k) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type SpecificCat (ReMorphism k) Source # | |||||
| type AgentVal (ReMorphism k) α ω Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type PairObjects (ReMorphism k) α β Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
data RePreArrow (k :: Type -> Type -> Type) α β where Source #
Constructors
| RePreArrow :: forall (k :: Type -> Type -> Type) α β. k α β -> RePreArrow k α β | |
| PreArrowId :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α α | |
| PreArrowCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => RePreArrow k α β1 -> RePreArrow k β1 β -> RePreArrow k α β | |
| PreArrowSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => RePreArrow k (α1, β1) (β1, α1) | |
| PreArrowAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => RePreArrow k α (α, u) | |
| PreArrowDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => RePreArrow k (β, u) β | |
| 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), γ) | |
| 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, γ)) | |
| PreArrowPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => RePreArrow k α1 β1 -> RePreArrow k γ δ -> RePreArrow k (α1, γ) (β1, δ) | |
| PreArrowFanout :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => RePreArrow k α β1 -> RePreArrow k α γ -> RePreArrow k α (β1, γ) | |
| PreArrowTerminal :: forall (k :: Type -> Type -> Type) α. Object k α => RePreArrow k α (UnitObject k) | |
| PreArrowFst :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => RePreArrow k (β, β1) β | |
| PreArrowSnd :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => RePreArrow k (α1, β) β |
Instances
| PreArrow k => Category (RePreArrow k :: Type -> Type -> Type) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods id :: Object (RePreArrow k) a => RePreArrow k a a Source # (.) :: (Object (RePreArrow k) a, Object (RePreArrow k) b, Object (RePreArrow k) c) => RePreArrow k b c -> RePreArrow k a b -> RePreArrow k a c Source # | |||||
| PreArrow k => Morphism (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods first :: (ObjectPair (RePreArrow k) b d, ObjectPair (RePreArrow k) c d) => RePreArrow k b c -> RePreArrow k (b, d) (c, d) Source # second :: (ObjectPair (RePreArrow k) d b, ObjectPair (RePreArrow k) d c) => RePreArrow k b c -> RePreArrow k (d, b) (d, c) Source # (***) :: (ObjectPair (RePreArrow k) b b', ObjectPair (RePreArrow k) c c') => RePreArrow k b c -> RePreArrow k b' c' -> RePreArrow k (b, b') (c, c') Source # | |||||
| PreArrow k => PreArrow (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods (&&&) :: (Object (RePreArrow k) b, ObjectPair (RePreArrow k) c c') => RePreArrow k b c -> RePreArrow k b c' -> RePreArrow k b (c, c') Source # terminal :: Object (RePreArrow k) b => RePreArrow k b (UnitObject (RePreArrow k)) Source # fst :: ObjectPair (RePreArrow k) x y => RePreArrow k (x, y) x Source # snd :: ObjectPair (RePreArrow k) x y => RePreArrow k (x, y) y Source # | |||||
| PreArrow k => Cartesian (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified Associated Types
Methods swap :: (ObjectPair (RePreArrow k) a b, ObjectPair (RePreArrow k) b a) => RePreArrow k (a, b) (b, a) Source # attachUnit :: (unit ~ UnitObject (RePreArrow k), ObjectPair (RePreArrow k) a unit) => RePreArrow k a (a, unit) Source # detachUnit :: (unit ~ UnitObject (RePreArrow k), ObjectPair (RePreArrow k) a unit) => RePreArrow k (a, unit) a Source # regroup :: (ObjectPair (RePreArrow k) a b, ObjectPair (RePreArrow k) b c, ObjectPair (RePreArrow k) a (b, c), ObjectPair (RePreArrow k) (a, b) c) => RePreArrow k (a, (b, c)) ((a, b), c) Source # regroup' :: (ObjectPair (RePreArrow k) a b, ObjectPair (RePreArrow k) b c, ObjectPair (RePreArrow k) a (b, c), ObjectPair (RePreArrow k) (a, b) c) => RePreArrow k ((a, b), c) (a, (b, c)) Source # | |||||
| (HasAgent k, PreArrow k) => HasAgent (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods alg :: (Object (RePreArrow k) a, Object (RePreArrow k) b) => (forall q. Object (RePreArrow k) q => AgentVal (RePreArrow k) q a -> AgentVal (RePreArrow k) q b) -> RePreArrow k a b Source # ($~) :: (Object (RePreArrow k) a, Object (RePreArrow k) b, Object (RePreArrow k) c) => RePreArrow k b c -> AgentVal (RePreArrow k) a b -> AgentVal (RePreArrow k) a c Source # | |||||
| PreArrow k => CRCartesian (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_swap :: RePreArrow k α β -> SwapPattern (RePreArrow k) α β Source # match_attachUnit :: RePreArrow k α β -> AttachUnitPattern (RePreArrow k) α β Source # match_detachUnit :: RePreArrow k α β -> DetachUnitPattern (RePreArrow k) α β Source # match_regroup :: RePreArrow k α β -> RegroupPattern (RePreArrow k) α β Source # match_regroup' :: RePreArrow k α β -> Regroup'Pattern (RePreArrow k) α β Source # | |||||
| PreArrow k => CRCategory (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Associated Types
Methods fromSpecific :: SpecificCat (RePreArrow k) α β -> RePreArrow k α β Source # match_concrete :: RePreArrow k α β -> Maybe (SpecificCat (RePreArrow k) α β) Source # match_id :: RePreArrow k α β -> IdPattern (RePreArrow k) α β Source # match_compose :: RePreArrow k α β -> CompoPattern (RePreArrow k) α β Source # | |||||
| PreArrow k => CRMorphism (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_par :: RePreArrow k α β -> ParPattern (RePreArrow k) α β Source # | |||||
| PreArrow k => CRPreArrow (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_fan :: RePreArrow k α β -> FanPattern (RePreArrow k) α β Source # match_fst :: RePreArrow k α β -> FstPattern (RePreArrow k) α β Source # match_snd :: RePreArrow k α β -> SndPattern (RePreArrow k) α β Source # match_terminal :: RePreArrow k α β -> TerminalPattern (RePreArrow k) α β Source # | |||||
| PreArrow k => EnhancedCat (RePreArrow k) k Source # | |||||
Defined in Control.Category.Constrained.Reified Methods arr :: (Object k b, Object k c, Object (RePreArrow k) b, Object (RePreArrow k) c) => k b c -> RePreArrow k b c Source # | |||||
| type Object (RePreArrow k :: Type -> Type -> Type) (a :: Type) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type UnitObject (RePreArrow k) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type SpecificCat (RePreArrow k) Source # | |||||
| type AgentVal (RePreArrow k) α ω Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type PairObjects (RePreArrow k) α β Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
data ReWellPointed (k :: Type -> Type -> Type) α β where Source #
Constructors
| ReWellPointed :: forall (k :: Type -> Type -> Type) α β. k α β -> ReWellPointed k α β | |
| WellPointedId :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α α | |
| WellPointedCompo :: forall (k :: Type -> Type -> Type) β1 α β. Object k β1 => ReWellPointed k α β1 -> ReWellPointed k β1 β -> ReWellPointed k α β | |
| WellPointedSwap :: forall (k :: Type -> Type -> Type) α1 β1. (ObjectPair k α1 β1, ObjectPair k β1 α1) => ReWellPointed k (α1, β1) (β1, α1) | |
| WellPointedAttachUnit :: forall (k :: Type -> Type -> Type) α u. (Object k α, UnitObject k ~ u, ObjectPair k α u) => ReWellPointed k α (α, u) | |
| WellPointedDetachUnit :: forall (k :: Type -> Type -> Type) β u. (Object k β, UnitObject k ~ u, ObjectPair k β u) => ReWellPointed k (β, u) β | |
| 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), γ) | |
| 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, γ)) | |
| WellPointedPar :: forall (k :: Type -> Type -> Type) α1 γ β1 δ. (ObjectPair k α1 γ, ObjectPair k β1 δ) => ReWellPointed k α1 β1 -> ReWellPointed k γ δ -> ReWellPointed k (α1, γ) (β1, δ) | |
| WellPointedFanout :: forall (k :: Type -> Type -> Type) α β1 γ. (Object k α, ObjectPair k β1 γ) => ReWellPointed k α β1 -> ReWellPointed k α γ -> ReWellPointed k α (β1, γ) | |
| WellPointedTerminal :: forall (k :: Type -> Type -> Type) α. Object k α => ReWellPointed k α (UnitObject k) | |
| WellPointedFst :: forall (k :: Type -> Type -> Type) β β1. ObjectPair k β β1 => ReWellPointed k (β, β1) β | |
| WellPointedSnd :: forall (k :: Type -> Type -> Type) α1 β. ObjectPair k α1 β => ReWellPointed k (α1, β) β | |
| WellPointedConst :: forall (k :: Type -> Type -> Type) α β. (Object k α, ObjectPoint k β) => β -> ReWellPointed k α β |
Instances
| WellPointed k => Category (ReWellPointed k :: Type -> Type -> Type) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods id :: Object (ReWellPointed k) a => ReWellPointed k a a Source # (.) :: (Object (ReWellPointed k) a, Object (ReWellPointed k) b, Object (ReWellPointed k) c) => ReWellPointed k b c -> ReWellPointed k a b -> ReWellPointed k a c Source # | |||||
| WellPointed k => Morphism (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods first :: (ObjectPair (ReWellPointed k) b d, ObjectPair (ReWellPointed k) c d) => ReWellPointed k b c -> ReWellPointed k (b, d) (c, d) Source # second :: (ObjectPair (ReWellPointed k) d b, ObjectPair (ReWellPointed k) d c) => ReWellPointed k b c -> ReWellPointed k (d, b) (d, c) Source # (***) :: (ObjectPair (ReWellPointed k) b b', ObjectPair (ReWellPointed k) c c') => ReWellPointed k b c -> ReWellPointed k b' c' -> ReWellPointed k (b, b') (c, c') Source # | |||||
| WellPointed k => PreArrow (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods (&&&) :: (Object (ReWellPointed k) b, ObjectPair (ReWellPointed k) c c') => ReWellPointed k b c -> ReWellPointed k b c' -> ReWellPointed k b (c, c') Source # terminal :: Object (ReWellPointed k) b => ReWellPointed k b (UnitObject (ReWellPointed k)) Source # fst :: ObjectPair (ReWellPointed k) x y => ReWellPointed k (x, y) x Source # snd :: ObjectPair (ReWellPointed k) x y => ReWellPointed k (x, y) y Source # | |||||
| WellPointed k => WellPointed (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods globalElement :: ObjectPoint (ReWellPointed k) x => x -> ReWellPointed k (UnitObject (ReWellPointed k)) x Source # unit :: CatTagged (ReWellPointed k) (UnitObject (ReWellPointed k)) Source # const :: (Object (ReWellPointed k) b, ObjectPoint (ReWellPointed k) x) => x -> ReWellPointed k b x Source # | |||||
| WellPointed k => Cartesian (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified Associated Types
Methods swap :: (ObjectPair (ReWellPointed k) a b, ObjectPair (ReWellPointed k) b a) => ReWellPointed k (a, b) (b, a) Source # attachUnit :: (unit ~ UnitObject (ReWellPointed k), ObjectPair (ReWellPointed k) a unit) => ReWellPointed k a (a, unit) Source # detachUnit :: (unit ~ UnitObject (ReWellPointed k), ObjectPair (ReWellPointed k) a unit) => ReWellPointed k (a, unit) a Source # regroup :: (ObjectPair (ReWellPointed k) a b, ObjectPair (ReWellPointed k) b c, ObjectPair (ReWellPointed k) a (b, c), ObjectPair (ReWellPointed k) (a, b) c) => ReWellPointed k (a, (b, c)) ((a, b), c) Source # regroup' :: (ObjectPair (ReWellPointed k) a b, ObjectPair (ReWellPointed k) b c, ObjectPair (ReWellPointed k) a (b, c), ObjectPair (ReWellPointed k) (a, b) c) => ReWellPointed k ((a, b), c) (a, (b, c)) Source # | |||||
| (HasAgent k, WellPointed k) => HasAgent (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified Methods alg :: (Object (ReWellPointed k) a, Object (ReWellPointed k) b) => (forall q. Object (ReWellPointed k) q => AgentVal (ReWellPointed k) q a -> AgentVal (ReWellPointed k) q b) -> ReWellPointed k a b Source # ($~) :: (Object (ReWellPointed k) a, Object (ReWellPointed k) b, Object (ReWellPointed k) c) => ReWellPointed k b c -> AgentVal (ReWellPointed k) a b -> AgentVal (ReWellPointed k) a c Source # | |||||
| WellPointed k => CRCartesian (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_swap :: ReWellPointed k α β -> SwapPattern (ReWellPointed k) α β Source # match_attachUnit :: ReWellPointed k α β -> AttachUnitPattern (ReWellPointed k) α β Source # match_detachUnit :: ReWellPointed k α β -> DetachUnitPattern (ReWellPointed k) α β Source # match_regroup :: ReWellPointed k α β -> RegroupPattern (ReWellPointed k) α β Source # match_regroup' :: ReWellPointed k α β -> Regroup'Pattern (ReWellPointed k) α β Source # | |||||
| WellPointed k => CRCategory (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Associated Types
Methods fromSpecific :: SpecificCat (ReWellPointed k) α β -> ReWellPointed k α β Source # match_concrete :: ReWellPointed k α β -> Maybe (SpecificCat (ReWellPointed k) α β) Source # match_id :: ReWellPointed k α β -> IdPattern (ReWellPointed k) α β Source # match_compose :: ReWellPointed k α β -> CompoPattern (ReWellPointed k) α β Source # | |||||
| WellPointed k => CRMorphism (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_par :: ReWellPointed k α β -> ParPattern (ReWellPointed k) α β Source # | |||||
| WellPointed k => CRPreArrow (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_fan :: ReWellPointed k α β -> FanPattern (ReWellPointed k) α β Source # match_fst :: ReWellPointed k α β -> FstPattern (ReWellPointed k) α β Source # match_snd :: ReWellPointed k α β -> SndPattern (ReWellPointed k) α β Source # match_terminal :: ReWellPointed k α β -> TerminalPattern (ReWellPointed k) α β Source # | |||||
| WellPointed k => CRWellPointed (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified.PolyPattern Methods match_const :: ReWellPointed k α β -> ConstPattern (ReWellPointed k) α β Source # | |||||
| WellPointed k => EnhancedCat (ReWellPointed k) k Source # | |||||
Defined in Control.Category.Constrained.Reified Methods arr :: (Object k b, Object k c, Object (ReWellPointed k) b, Object (ReWellPointed k) c) => k b c -> ReWellPointed k b c Source # | |||||
| type Object (ReWellPointed k :: Type -> Type -> Type) (a :: Type) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type UnitObject (ReWellPointed k) Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type SpecificCat (ReWellPointed k) Source # | |||||
| type PointObject (ReWellPointed k) α Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type AgentVal (ReWellPointed k) α ω Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||
| type PairObjects (ReWellPointed k) α β Source # | |||||
Defined in Control.Category.Constrained.Reified | |||||