module Pandora.Pattern.Functor.Traversable where
import Pandora.Pattern.Functor.Covariant (Covariant_)
import Pandora.Pattern.Functor.Applicative (Semimonoidal)
import Pandora.Pattern.Functor.Pointable (Pointable)
import Pandora.Paradigm.Primary.Algebraic.Product ((:*:))
infixl 5 <<-, -<<-<<-
class Covariant_ t source target => Traversable t source target where
(<<-) :: (Covariant_ u source target, Pointable u target, Semimonoidal u (:*:) source target) => source a (u b) -> target (t a) (u (t b))
(-<<-<<-) :: forall t u v category a b .
(Traversable t category category, Covariant_ u category category, Pointable u category, Semimonoidal u (:*:) category category, Traversable v category category)
=> category a (u b) -> category (v (t a)) (u (v (t b)))
-<<-<<- :: category a (u b) -> category (v (t a)) (u (v (t b)))
(-<<-<<-) category a (u b)
f = (category (t a) (u (t b)) -> category (v (t a)) (u (v (t b)))
forall (t :: * -> *) (source :: * -> * -> *)
(target :: * -> * -> *) (u :: * -> *) a b.
(Traversable t source target, Covariant_ u source target,
Pointable u target, Semimonoidal u (:*:) source target) =>
source a (u b) -> target (t a) (u (t b))
(<<-) (category a (u b) -> category (t a) (u (t b))
forall (t :: * -> *) (source :: * -> * -> *)
(target :: * -> * -> *) (u :: * -> *) a b.
(Traversable t source target, Covariant_ u source target,
Pointable u target, Semimonoidal u (:*:) source target) =>
source a (u b) -> target (t a) (u (t b))
(<<-) @t @category @category category a (u b)
f))