| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Monoidal.Distributive
Synopsis
- class (MonoidalProfunctor p, MonoidalProfunctor (Coprod p)) => DistributiveProfunctor (p :: j +-> k)
- class (Monoidal k, HasCoproducts k, DistributiveProfunctor (Id :: k -> k -> Type)) => Distributive k where
- distL :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c))
- distR :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c))
- distL0 :: forall (a :: k). Ob a => (a ** (InitialObject :: k)) ~> (InitialObject :: k)
- distR0 :: forall (a :: k). Ob a => ((InitialObject :: k) ** a) ~> (InitialObject :: k)
- distLInv :: forall {k} (a :: k) (b :: k) (c :: k). (Monoidal k, HasCoproducts k, Ob a, Ob b, Ob c) => ((a ** b) || (a ** c)) ~> (a ** (b || c))
- distRInv :: forall {k} (a :: k) (b :: k) (c :: k). (Monoidal k, HasCoproducts k, Ob a, Ob b, Ob c) => ((a ** c) || (b ** c)) ~> ((a || b) ** c)
- distLProd :: forall {k} (a :: k) (b :: k) (c :: k). (BiCCC k, Ob a, Ob b, Ob c) => (a && (b || c)) ~> ((a && b) || (a && c))
- distRProd :: forall {k} (a :: k) (b :: k) (c :: k). (BiCCC k, Ob a, Ob b, Ob c) => ((a || b) && c) ~> ((a && c) || (b && c))
- class (DistributiveProfunctor p, Strong k p, SelfAction k) => StrongDistributiveProfunctor (p :: k +-> k)
- class Profunctor t => Traversable (t :: k +-> k) where
- repTraverse :: forall {k} (t :: k +-> k) p (a :: k) (b :: k). (Traversable t, Representable t, StrongDistributiveProfunctor p) => p a b -> p (t % a) (t % b)
- baseTraverse :: forall {k} (t :: k +-> k) (f :: k +-> k) (a :: k) (b :: k). (Traversable t, Representable t, Representable f, StrongDistributiveProfunctor f, Ob b) => (a ~> (f % b)) -> (t % a) ~> (f % (t % b))
- class Profunctor t => Cotraversable (t :: k +-> k) where
- cotraverse :: forall (p :: k +-> k). (DistributiveProfunctor p, Strong k p, SelfAction k) => (p :.: t) :~> (t :.: p)
Documentation
class (MonoidalProfunctor p, MonoidalProfunctor (Coprod p)) => DistributiveProfunctor (p :: j +-> k) Source Github #
Instances
| (MonoidalProfunctor p, MonoidalProfunctor (Coprod p)) => DistributiveProfunctor (p :: j +-> k) Source Github # | |
Defined in Proarrow.Category.Monoidal.Distributive | |
class (Monoidal k, HasCoproducts k, DistributiveProfunctor (Id :: k -> k -> Type)) => Distributive k where Source Github #
Methods
distL :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github #
distR :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github #
distL0 :: forall (a :: k). Ob a => (a ** (InitialObject :: k)) ~> (InitialObject :: k) Source Github #
distR0 :: forall (a :: k). Ob a => ((InitialObject :: k) ** a) ~> (InitialObject :: k) Source Github #
Instances
| Distributive BOOL Source Github # | |
Defined in Proarrow.Category.Instance.Bool Methods distL :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: BOOL). Ob a => (a ** (InitialObject :: BOOL)) ~> (InitialObject :: BOOL) Source Github # distR0 :: forall (a :: BOOL). Ob a => ((InitialObject :: BOOL) ** a) ~> (InitialObject :: BOOL) Source Github # | |
| Distributive COST Source Github # | |
Defined in Proarrow.Category.Instance.Cost Methods distL :: forall (a :: COST) (b :: COST) (c :: COST). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: COST) (b :: COST) (c :: COST). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: COST). Ob a => (a ** (InitialObject :: COST)) ~> (InitialObject :: COST) Source Github # distR0 :: forall (a :: COST). Ob a => ((InitialObject :: COST) ** a) ~> (InitialObject :: COST) Source Github # | |
| Distributive FINREL Source Github # | |
Defined in Proarrow.Category.Instance.FinRel Methods distL :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: FINREL). Ob a => (a ** (InitialObject :: FINREL)) ~> (InitialObject :: FINREL) Source Github # distR0 :: forall (a :: FINREL). Ob a => ((InitialObject :: FINREL) ** a) ~> (InitialObject :: FINREL) Source Github # | |
| Distributive FINSET Source Github # | |
Defined in Proarrow.Category.Instance.FinSet Methods distL :: forall (a :: FINSET) (b :: FINSET) (c :: FINSET). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: FINSET) (b :: FINSET) (c :: FINSET). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: FINSET). Ob a => (a ** (InitialObject :: FINSET)) ~> (InitialObject :: FINSET) Source Github # distR0 :: forall (a :: FINSET). Ob a => ((InitialObject :: FINSET) ** a) ~> (InitialObject :: FINSET) Source Github # | |
| Distributive LINEAR Source Github # | |
Defined in Proarrow.Category.Instance.Linear Methods distL :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: LINEAR). Ob a => (a ** (InitialObject :: LINEAR)) ~> (InitialObject :: LINEAR) Source Github # distR0 :: forall (a :: LINEAR). Ob a => ((InitialObject :: LINEAR) ** a) ~> (InitialObject :: LINEAR) Source Github # | |
| Distributive () Source Github # | |
Defined in Proarrow.Category.Monoidal.Distributive Methods distL :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: ()). Ob a => (a ** (InitialObject :: ())) ~> (InitialObject :: ()) Source Github # distR0 :: forall (a :: ()). Ob a => ((InitialObject :: ()) ** a) ~> (InitialObject :: ()) Source Github # | |
| Distributive Type Source Github # | |
Defined in Proarrow.Category.Monoidal.Distributive Methods distL :: (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: Ob a => (a ** (InitialObject :: Type)) ~> (InitialObject :: Type) Source Github # distR0 :: Ob a => ((InitialObject :: Type) ** a) ~> (InitialObject :: Type) Source Github # | |
| Num a => Distributive (MatK a) Source Github # | |
Defined in Proarrow.Category.Instance.Mat Methods distL :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b || c)) ~> ((a0 ** b) || (a0 ** c)) Source Github # distR :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 || b) ** c) ~> ((a0 ** c) || (b ** c)) Source Github # distL0 :: forall (a0 :: MatK a). Ob a0 => (a0 ** (InitialObject :: MatK a)) ~> (InitialObject :: MatK a) Source Github # distR0 :: forall (a0 :: MatK a). Ob a0 => ((InitialObject :: MatK a) ** a0) ~> (InitialObject :: MatK a) Source Github # | |
| BiCCC k => Distributive (PROD k) Source Github # | |
Defined in Proarrow.Category.Monoidal.Distributive Methods distL :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: PROD k). Ob a => (a ** (InitialObject :: PROD k)) ~> (InitialObject :: PROD k) Source Github # distR0 :: forall (a :: PROD k). Ob a => ((InitialObject :: PROD k) ** a) ~> (InitialObject :: PROD k) Source Github # | |
| (Distributive k, Promonad p, DistributiveProfunctor p) => Distributive (KLEISLI p) Source Github # | |
Defined in Proarrow.Category.Instance.Kleisli Methods distL :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: KLEISLI p). Ob a => (a ** (InitialObject :: KLEISLI p)) ~> (InitialObject :: KLEISLI p) Source Github # distR0 :: forall (a :: KLEISLI p). Ob a => ((InitialObject :: KLEISLI p) ** a) ~> (InitialObject :: KLEISLI p) Source Github # | |
| (Monoidal j, Monoidal k) => Distributive (j +-> k) Source Github # | |
Defined in Proarrow.Profunctor.Day Methods distL :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github # distR :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github # distL0 :: forall (a :: j +-> k). Ob a => (a ** (InitialObject :: j +-> k)) ~> (InitialObject :: j +-> k) Source Github # distR0 :: forall (a :: j +-> k). Ob a => ((InitialObject :: j +-> k) ** a) ~> (InitialObject :: j +-> k) Source Github # | |
distLInv :: forall {k} (a :: k) (b :: k) (c :: k). (Monoidal k, HasCoproducts k, Ob a, Ob b, Ob c) => ((a ** b) || (a ** c)) ~> (a ** (b || c)) Source Github #
distRInv :: forall {k} (a :: k) (b :: k) (c :: k). (Monoidal k, HasCoproducts k, Ob a, Ob b, Ob c) => ((a ** c) || (b ** c)) ~> ((a || b) ** c) Source Github #
distLProd :: forall {k} (a :: k) (b :: k) (c :: k). (BiCCC k, Ob a, Ob b, Ob c) => (a && (b || c)) ~> ((a && b) || (a && c)) Source Github #
distRProd :: forall {k} (a :: k) (b :: k) (c :: k). (BiCCC k, Ob a, Ob b, Ob c) => ((a || b) && c) ~> ((a && c) || (b && c)) Source Github #
class (DistributiveProfunctor p, Strong k p, SelfAction k) => StrongDistributiveProfunctor (p :: k +-> k) Source Github #
Instances
| (DistributiveProfunctor p, Strong k p, SelfAction k) => StrongDistributiveProfunctor (p :: k +-> k) Source Github # | |
Defined in Proarrow.Category.Monoidal.Distributive | |
class Profunctor t => Traversable (t :: k +-> k) where Source Github #
Methods
traverse :: forall (p :: k +-> k). StrongDistributiveProfunctor p => (t :.: p) :~> (p :.: t) Source Github #
Instances
| CategoryOf k => Traversable (Id :: k -> k -> Type) Source Github # | |
| Traversable (->) Source Github # | |
| Traversable p => Traversable (Fix p :: k -> k -> Type) Source Github # | |
| (Monoid w, Monoidal k) => Traversable (Writer w :: k -> k -> Type) Source Github # | |
| Traversable (Star Maybe) Source Github # | |
| Traversable (Star []) Source Github # | |
| SelfAction k => Traversable (HaskValue c :: k -> k -> Type) Source Github # | |
| (Traversable p, Traversable q) => Traversable (p :+: q :: k -> k -> Type) Source Github # | |
| (Cartesian k, Traversable p, Traversable q) => Traversable (p :*: q :: k -> k -> Type) Source Github # | |
| (Traversable p, Traversable q) => Traversable (p :.: q :: k -> k -> Type) Source Github # | |
repTraverse :: forall {k} (t :: k +-> k) p (a :: k) (b :: k). (Traversable t, Representable t, StrongDistributiveProfunctor p) => p a b -> p (t % a) (t % b) Source Github #
With a representable traversable profunctor, you get a traversal a la one-liner.
baseTraverse :: forall {k} (t :: k +-> k) (f :: k +-> k) (a :: k) (b :: k). (Traversable t, Representable t, Representable f, StrongDistributiveProfunctor f, Ob b) => (a ~> (f % b)) -> (t % a) ~> (f % (t % b)) Source Github #
If both profunctors are representable, you get traversals as in base.
class Profunctor t => Cotraversable (t :: k +-> k) where Source Github #
Methods
cotraverse :: forall (p :: k +-> k). (DistributiveProfunctor p, Strong k p, SelfAction k) => (p :.: t) :~> (t :.: p) Source Github #