| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Graph
Synopsis
- data GRAPH (p :: k +-> j) = GR j k
- data family GrJ :: GRAPH p +-> j
- data family GrK :: GRAPH p +-> k
- data Graph (a :: GRAPH p) (b :: GRAPH p) where
- diagonalElement :: forall {j} {k} (p :: k +-> j) (aj :: j) (ak :: k) (bj :: j) (bk :: k) r. ThinProfunctor p => (('GR aj ak :: GRAPH p) ~> ('GR bj bk :: GRAPH p)) -> (HasArrow p aj bk => r) -> r
- type ARROW k = GRAPH (Id :: k -> k -> Type)
- type ELEMENTS (f :: k +-> j) = GRAPH (Rep f)
- type COMMA (f :: j +-> k) (g :: k1 +-> k) = GRAPH (Direp f g)
Documentation
data GRAPH (p :: k +-> j) Source Github #
Constructors
| GR j k |
Instances
| ThinProfunctor p => CategoryOf (GRAPH p) Source Github # | The graph of a thin profunctor. Doing this for any profunctor would need dependent types. |
Defined in Proarrow.Category.Instance.Graph | |
| ThinProfunctor p => FunctorForRep (GrJ :: GRAPH p +-> j) Source Github # | |
| ThinProfunctor p => FunctorForRep (GrK :: GRAPH p +-> k) Source Github # | |
| ThinProfunctor p => Promonad (Graph :: GRAPH p -> GRAPH p -> Type) Source Github # | |
| ThinProfunctor p => Profunctor (Graph :: GRAPH p -> GRAPH p -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Graph Methods dimap :: forall (c :: GRAPH p) (a :: GRAPH p) (b :: GRAPH p) (d :: GRAPH p). (c ~> a) -> (b ~> d) -> Graph a b -> Graph c d Source Github # lmap :: forall (c :: GRAPH p) (a :: GRAPH p) (b :: GRAPH p). (c ~> a) -> Graph a b -> Graph c b Source Github # rmap :: forall (b :: GRAPH p) (d :: GRAPH p) (a :: GRAPH p). (b ~> d) -> Graph a b -> Graph a d Source Github # (\\) :: forall (a :: GRAPH p) (b :: GRAPH p) r. ((Ob a, Ob b) => r) -> Graph a b -> r Source Github # | |
| type (~>) Source Github # | |
| type Ob (ab :: GRAPH p) Source Github # | |
| type (GrJ :: GRAPH p +-> j) @ ('GR x y :: GRAPH p) Source Github # | |
| type (GrK :: GRAPH p +-> k) @ ('GR x y :: GRAPH p) Source Github # | |
data Graph (a :: GRAPH p) (b :: GRAPH p) where Source Github #
Constructors
| Graph :: forall {k} {k1} {p :: k +-> k1} (aj :: k1) (ak :: k) (bj :: k1) (bk :: k). (HasArrow p aj ak, HasArrow p bj bk) => (aj ~> bj) -> (ak ~> bk) -> Graph ('GR aj ak :: GRAPH p) ('GR bj bk :: GRAPH p) |
Instances
| ThinProfunctor p => Promonad (Graph :: GRAPH p -> GRAPH p -> Type) Source Github # | |
| ThinProfunctor p => Profunctor (Graph :: GRAPH p -> GRAPH p -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Graph Methods dimap :: forall (c :: GRAPH p) (a :: GRAPH p) (b :: GRAPH p) (d :: GRAPH p). (c ~> a) -> (b ~> d) -> Graph a b -> Graph c d Source Github # lmap :: forall (c :: GRAPH p) (a :: GRAPH p) (b :: GRAPH p). (c ~> a) -> Graph a b -> Graph c b Source Github # rmap :: forall (b :: GRAPH p) (d :: GRAPH p) (a :: GRAPH p). (b ~> d) -> Graph a b -> Graph a d Source Github # (\\) :: forall (a :: GRAPH p) (b :: GRAPH p) r. ((Ob a, Ob b) => r) -> Graph a b -> r Source Github # | |
diagonalElement :: forall {j} {k} (p :: k +-> j) (aj :: j) (ak :: k) (bj :: j) (bk :: k) r. ThinProfunctor p => (('GR aj ak :: GRAPH p) ~> ('GR bj bk :: GRAPH p)) -> (HasArrow p aj bk => r) -> r Source Github #
A morphism gives two equal ways to compute the "diagonal", which is an element of the profunctor.