module Lava.Sequent where
class Functor s => Sequent s where
sequent :: Monad m => s (m a) -> m (s a)
instance Sequent [] where
sequent :: [m a] -> m [a]
sequent = [m a] -> m [a]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
sequence
mmap :: (Monad m, Sequent s) => (a -> m b) -> s a -> m (s b)
mmap :: (a -> m b) -> s a -> m (s b)
mmap f :: a -> m b
f = s (m b) -> m (s b)
forall (s :: * -> *) (m :: * -> *) a.
(Sequent s, Monad m) =>
s (m a) -> m (s a)
sequent (s (m b) -> m (s b)) -> (s a -> s (m b)) -> s a -> m (s b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> m b) -> s a -> s (m b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> m b
f