From 837500beda803a3b8e64b0ec07940ba4e4824818 Mon Sep 17 00:00:00 2001 From: stolz Date: Thu, 29 Aug 2002 16:03:57 +0000 Subject: [PATCH] [project @ 2002-08-29 16:03:57 by stolz] Add replicateM[_] and foldM_ --- Control/Monad.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Control/Monad.hs b/Control/Monad.hs index c86ffbb..68ce9cc 100644 --- a/Control/Monad.hs +++ b/Control/Monad.hs @@ -27,6 +27,7 @@ module Control.Monad , zipWithM -- :: (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m [c] , zipWithM_ -- :: (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m () , foldM -- :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m a + , foldM_ -- :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m () , liftM -- :: (Monad m) => (a -> b) -> (m a -> m b) , liftM2 -- :: (Monad m) => (a -> b -> c) -> (m a -> m b -> m c) @@ -41,6 +42,8 @@ module Control.Monad , mapM_ -- :: (Monad m) => (a -> m b) -> [a] -> m () , sequence -- :: (Monad m) => [m a] -> m [a] , sequence_ -- :: (Monad m) => [m a] -> m () + , replicateM -- :: (Monad m) => Int -> m a -> m [a] + , replicateM_ -- :: (Monad m) => Int -> m a -> m () , (=<<) -- :: (Monad m) => (a -> m b) -> m a -> m b ) where @@ -138,6 +141,15 @@ foldM :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m a foldM _ a [] = return a foldM f a (x:xs) = f a x >>= \fax -> foldM f fax xs +foldM_ :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m () +foldM_ f a xs = foldM f a xs >> return () + +replicateM :: (Monad m) => Int -> m a -> m [a] +replicateM n x = sequence (replicate n x) + +replicateM_ :: (Monad m) => Int -> m a -> m () +replicateM_ n x = sequence_ (replicate n x) + unless :: (Monad m) => Bool -> m () -> m () unless p s = if p then return () else s -- 1.7.10.4