[Haskell-cafe] ANN: Control.Monad.IfElse

Jeff Heard jefferson.r.heard at gmail.com
Mon Dec 22 09:24:53 EST 2008


Provides useful anaphoric and monadic versions of if-else and when, as
well as infix operators for the actions to allow things like this:

-- Allow the clause to be in m a
whenM (Gtk.widgetIsFocus win) $ do
  this
  that

-- anaphoric if.  If the condition is nonempty, pass the conditional
value to the "then" clause, otherwise do an action that requires no
parameter.
aif (lookup name list)
  (\file -> Right `liftM` hGetLine file)
  (do f <- openFile name
       l <- hGetLine file
       return $ Right (f,l))

-- infix version of Control.Monad.When
(x>5) >>? putStrLn x

-- infix version of anaphoric when
lookup name list >>=? \value -> putStrLn value

-- infix version of anaphoric whenM
Gtk.widgetIntersect win rect >>=>>? \intersectingRectangle' ->
Gtk.invalidate intersectingRectangle'


More information about the Haskell-Cafe mailing list