IfElse-0.85: Anaphoric and miscellaneous useful control-flow

Control.Monad.IfElse

Description

Library for control flow inside of monads with anaphoric variants on if and when and a C-like "switch" function.

Information:

Author
Jeff Heard
Copyright
2008 Jeff Heard
License
BSD
Version
1.0
Status
Alpha

Synopsis

Documentation

whenM :: Monad m => m Bool -> m () -> m ()Source

A if with no else for unit returning thunks. Returns the value of the test.

cond :: Monad m => [(Bool, m ())] -> m ()Source

Like a switch statement, and less cluttered than if else if

 cond [ (t1,a1), (t2,a2), ... ]

condM :: Monad m => [(m Bool, m ())] -> m ()Source

Like a switch statement, and less cluttered than if else if

 condM [ (t1,a1), (t2,a2), ... ]

awhen :: Monad m => Maybe a -> (a -> m ()) -> m ()Source

Chainable anaphoric when. Takes a maybe value.

if the value is Just x then execute action x , then return True . otherwise return False .

awhenM :: Monad m => m (Maybe a) -> (a -> m ()) -> m ()Source

Chainable anaphoric whenM.

acond :: Monad m => [(Maybe a, a -> m ())] -> m ()Source

Anaphoric when-else chain. Like a switch statement, but less cluttered

aif :: Monad m => Maybe a -> (a -> m b) -> m b -> m bSource

Anaphoric if.

aifM :: Monad m => m (Maybe a) -> (a -> m b) -> m b -> m bSource

Anaphoric if where the test is in Monad m.

ncondM :: Monad m => [(m Bool, m ())] -> m ()Source

Contrapositive of whenM, if not x then do y

unless-else chain.

monadic unless-else chain

whileM :: Monad m => m Bool -> m () -> m ()Source

IO lifted &&

IO lifted ||

Conditionally do the right action based on the truth value of the left expression

unless the left side is true, perform the right action

unless the (monadic) left side is true, perform the right action

Bind the result of the last expression in an anaphoric when.

composition of >>= and >>?

composition of >>= and >>=?

Execute a monadic action so long as a monadic boolean returns true.

untilM :: Monad m => m Bool -> m () -> m ()Source

Negation of whileM: execute an action so long as the boolean returns false.

return' :: Monad m => a -> m aSource

Strict version of return because usually we don't need that extra thunk.

returning :: Monad m => (a -> m b) -> a -> m aSource

Take an action and make it into a side-effecting return. Because I seem to keep running into m () and the like.

maybeMP :: MonadPlus m => Maybe a -> m aSource

This conversion is common enough to make a name for.