{-# LANGUAGE BlockArguments #-}

module Control.Monad.Cont.MiscYj where

import Control.Monad.Cont

mapContM :: (a -> (b -> m c) -> m c) -> [a] -> ([b] -> m c) -> m c
mapContM :: forall a b (m :: * -> *) c.
(a -> (b -> m c) -> m c) -> [a] -> ([b] -> m c) -> m c
mapContM a -> (b -> m c) -> m c
f = ContT c m [b] -> ([b] -> m c) -> m c
forall {k} (r :: k) (m :: k -> *) a.
ContT r m a -> (a -> m r) -> m r
runContT (ContT c m [b] -> ([b] -> m c) -> m c)
-> ([a] -> ContT c m [b]) -> [a] -> ([b] -> m c) -> m c
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> ContT c m b) -> [a] -> ContT c m [b]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (((b -> m c) -> m c) -> ContT c m b
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((b -> m c) -> m c) -> ContT c m b)
-> (a -> (b -> m c) -> m c) -> a -> ContT c m b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> (b -> m c) -> m c
f)