STM check/MonadPlus

Remi Turk rturk at science.uva.nl
Sun Feb 6 15:25:18 EST 2005


Hi,

I have a few questions about the `check' function from
Control.Concurrent.STM.

First, in the paper its definition contains a (type) error:

check :: Bool -> STM a
check True  = return ()
check False = retry

in fptools, however, it is defined as follows:

check :: Bool -> STM a
check b = if b then return undefined else retry

As we already have guard, and STM is an instance of MonadPlus,
I wonder why such a simple utility function as check is wanted
at all.

guard           :: (MonadPlus m) => Bool -> m ()
guard True      =  return ()
guard False     =  mzero

Greetings,
Remi

-- 
Nobody can be exactly like me. Even I have trouble doing it.


More information about the Glasgow-haskell-users mailing list