module Control.Joint.Operators where import Control.Joint.Core ((:.), (:=)) (<$$>) :: (Functor t, Functor u) => (a -> b) -> t :. u := a -> t :. u := b <$$> :: (a -> b) -> ((t :. u) := a) -> (t :. u) := b (<$$>) = (u a -> u b) -> ((t :. u) := a) -> (t :. u) := b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((u a -> u b) -> ((t :. u) := a) -> (t :. u) := b) -> ((a -> b) -> u a -> u b) -> (a -> b) -> ((t :. u) := a) -> (t :. u) := b forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> u a -> u b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) (<$$$>) :: (Functor t, Functor u, Functor v) => (a -> b) -> t :. u :. v := a -> t :. u :. v := b <$$$> :: (a -> b) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b (<$$$>) = (u (v a) -> u (v b)) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((u (v a) -> u (v b)) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b) -> ((a -> b) -> u (v a) -> u (v b)) -> (a -> b) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b forall b c a. (b -> c) -> (a -> b) -> a -> c . (v a -> v b) -> u (v a) -> u (v b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((v a -> v b) -> u (v a) -> u (v b)) -> ((a -> b) -> v a -> v b) -> (a -> b) -> u (v a) -> u (v b) forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> v a -> v b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) (<$$$$>) :: (Functor t, Functor u, Functor v, Functor w) => (a -> b) -> t :. u :. v :. w := a -> t :. u :. v :. w := b <$$$$> :: (a -> b) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b (<$$$$>) = (u (v (w a)) -> u (v (w b))) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((u (v (w a)) -> u (v (w b))) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b) -> ((a -> b) -> u (v (w a)) -> u (v (w b))) -> (a -> b) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b forall b c a. (b -> c) -> (a -> b) -> a -> c . (v (w a) -> v (w b)) -> u (v (w a)) -> u (v (w b)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((v (w a) -> v (w b)) -> u (v (w a)) -> u (v (w b))) -> ((a -> b) -> v (w a) -> v (w b)) -> (a -> b) -> u (v (w a)) -> u (v (w b)) forall b c a. (b -> c) -> (a -> b) -> a -> c . (w a -> w b) -> v (w a) -> v (w b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) ((w a -> w b) -> v (w a) -> v (w b)) -> ((a -> b) -> w a -> w b) -> (a -> b) -> v (w a) -> v (w b) forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> w a -> w b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b (<$>) (<**>) :: (Applicative t, Applicative u) => t :. u := (a -> b) -> t :. u := a -> t :. u := b (t :. u) := (a -> b) f <**> :: ((t :. u) := (a -> b)) -> ((t :. u) := a) -> (t :. u) := b <**> (t :. u) := a x = u (a -> b) -> u a -> u b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b (<*>) (u (a -> b) -> u a -> u b) -> ((t :. u) := (a -> b)) -> t (u a -> u b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (t :. u) := (a -> b) f t (u a -> u b) -> ((t :. u) := a) -> (t :. u) := b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (t :. u) := a x (<***>) :: (Applicative t, Applicative u, Applicative v) => t :. u :. v := (a -> b) -> t :. u :. v := a -> t :. u :. v := b (t :. (u :. v)) := (a -> b) f <***> :: ((t :. (u :. v)) := (a -> b)) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b <***> (t :. (u :. v)) := a x = ((u :. v) := (a -> b)) -> ((u :. v) := a) -> (u :. v) := b forall (t :: * -> *) (u :: * -> *) a b. (Applicative t, Applicative u) => ((t :. u) := (a -> b)) -> ((t :. u) := a) -> (t :. u) := b (<**>) (((u :. v) := (a -> b)) -> ((u :. v) := a) -> (u :. v) := b) -> ((t :. (u :. v)) := (a -> b)) -> t (((u :. v) := a) -> (u :. v) := b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (t :. (u :. v)) := (a -> b) f t (((u :. v) := a) -> (u :. v) := b) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (t :. (u :. v)) := a x (<****>) :: (Applicative t, Applicative u, Applicative v, Applicative w) => t :. u :. v :. w := (a -> b) -> t :. u :. v :. w := a -> t :. u :. v :. w := b (t :. (u :. (v :. w))) := (a -> b) f <****> :: ((t :. (u :. (v :. w))) := (a -> b)) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b <****> (t :. (u :. (v :. w))) := a x = ((u :. (v :. w)) := (a -> b)) -> ((u :. (v :. w)) := a) -> (u :. (v :. w)) := b forall (t :: * -> *) (u :: * -> *) (v :: * -> *) a b. (Applicative t, Applicative u, Applicative v) => ((t :. (u :. v)) := (a -> b)) -> ((t :. (u :. v)) := a) -> (t :. (u :. v)) := b (<***>) (((u :. (v :. w)) := (a -> b)) -> ((u :. (v :. w)) := a) -> (u :. (v :. w)) := b) -> ((t :. (u :. (v :. w))) := (a -> b)) -> t (((u :. (v :. w)) := a) -> (u :. (v :. w)) := b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (t :. (u :. (v :. w))) := (a -> b) f t (((u :. (v :. w)) := a) -> (u :. (v :. w)) := b) -> ((t :. (u :. (v :. w))) := a) -> (t :. (u :. (v :. w))) := b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (t :. (u :. (v :. w))) := a x ($>>=) :: (Functor u, Monad t) => (a -> t b) -> u :. t := a -> u :. t := b a -> t b f $>>= :: (a -> t b) -> ((u :. t) := a) -> (u :. t) := b $>>= (u :. t) := a x = (t a -> (a -> t b) -> t b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= a -> t b f) (t a -> t b) -> ((u :. t) := a) -> (u :. t) := b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (u :. t) := a x (>>=$) :: Monad t => (t b -> c) -> (a -> t b) -> t a -> c t b -> c f >>=$ :: (t b -> c) -> (a -> t b) -> t a -> c >>=$ a -> t b g = t b -> c f (t b -> c) -> (t a -> t b) -> t a -> c forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (t a -> (a -> t b) -> t b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= a -> t b g)