Hello Dougal,
Friday, November 24, 2006, 12:34:49 AM, you wrote:
> Is there some sort of equivalent of the if/then/else construct for use
> in the IO monad? For instance the following can get quite tedious:
just a list of my control structures:
whenM cond action = do
allow <- cond
when allow
action
unlessM = whenM . liftM not
whenJustM x action = x >>= maybe (return Nothing) action
whenJustM_ x action = x >>= maybe (return ()) (action .>> return ())
foreach = flip mapM
for = flip mapM_
on = flip when
repeat_foreverM action = do
action
repeat_foreverM action
repeat_whileM inp cond out = do
x <- inp
if (cond x)
then do out x
repeat_whileM inp cond out
else return x
repeat_untilM action = do
done <- action
when (not done) $ do
repeat_untilM action
doChunks size chunk action =
case size of
0 -> return ()
_ -> do let n = minI size chunk
action (fromIntegral n)
doChunks (size-n) chunk action
recursiveM action x = action x >>= mapM_ (recursiveM action)
--
Best regards,
Bulat mailto:[EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe