Dougal Stanton 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:
> 
>> do bool <- doesFileExist filename
>>    if bool
>>    then sth
>>    else sth'
> 
> Is there a more compact way of writing that? Something akin to:
> 
>> condM (doesFileExist filename) (sth) (sth')
> 
> Or maybe there's a more sensible way of doing the above that I've
> missed. I seem to use endless alternate conditions sometimes and there's
> bound to be a better way.

Roll your own control structures! Haskell has higher order functions for a
reason. This should do the trick (untested):

condM condAction thenBranch elseBranch = do
  bool <- condAction
  if bool
    then thenBranch
    else elseBranch

(Hack it into ghci or hugs to find out the type, it's a bit more general
than what you need.)

Cheers
Ben

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to