Proposal: add ifM and whenM to Control.Monad
Herbert Valerio Riedel
hvr at gnu.org
Sun Apr 20 19:59:52 UTC 2014
Hi Mario,
On 2014-04-20 at 21:10:03 +0200, Mario Pastorelli wrote:
> I would like to propose the addition of two new combinators to
> Control.Monad:
>
> ifM :: (Monad m) => m Bool -> m a -> m a -> m a
> whenM :: (Monad m) => m Bool -> m () -> m ()
[...]
> f = do
> dirDoesntExist <- not <$> doesDirectoryExist path
> when dirDoesntExist $ do
> putStrLn $ "Creating directory " ++ path
> createDirectory path
While I'm neutral on this proposal, I'd like to remind that LambdaCase
may be useful to avoid temporary variables as well (and is even more
useful for types other than Bool):
f = doesDirectoryExist path >>= \case
True -> return ()
False -> do
putStrLn $ "Creating directory " ++ path
createDirectory path
Cheers,
hvr
More information about the Libraries
mailing list