sequence :: Monad m => f (m a) -> m (f a)
mapM f l = sequence (fmap f l)
+/// MonadE ///
+
+class (FunctorE m, Monad m) => MonadE m where
+ bindE :: m a -> (a -> <e> m b) -> <e> m b
+
+instance MonadE Maybe where
+ bindE Nothing _ = Nothing
+ bindE (Just v) f = f v
+
+instance MonadE (Either a) where
+ bindE (Left v) _ = Left v
+ bindE (Right v) f = f v
+
+instance MonadE [] where
+ bindE l f = concatMap f l
+
/// Category ///
"Identity function."