{-# LANGUAGE BlockArguments #-} module Control.Monad.Cont.MiscYj where import Control.Monad 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) replicateContM :: Int -> ((a -> m b) -> m b) -> (([a] -> m b) -> m b) replicateContM :: forall a (m :: * -> *) b. Int -> ((a -> m b) -> m b) -> ([a] -> m b) -> m b replicateContM Int n = ContT b m [a] -> ([a] -> m b) -> m b forall {k} (r :: k) (m :: k -> *) a. ContT r m a -> (a -> m r) -> m r runContT (ContT b m [a] -> ([a] -> m b) -> m b) -> (((a -> m b) -> m b) -> ContT b m [a]) -> ((a -> m b) -> m b) -> ([a] -> m b) -> m b forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> ContT b m a -> ContT b m [a] forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a] replicateM Int n (ContT b m a -> ContT b m [a]) -> (((a -> m b) -> m b) -> ContT b m a) -> ((a -> m b) -> m b) -> ContT b m [a] forall b c a. (b -> c) -> (a -> b) -> a -> c . ((a -> m b) -> m b) -> ContT b m a forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT