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. _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
