GF.Inra.UseIO: add instance Functor IOE, add method fail to instance Monad IOE

This commit is contained in:
hallgren
2012-02-20 17:26:49 +00:00
parent e25ee8e2fb
commit 94685d184d

View File

@@ -137,11 +137,14 @@ ioeIO io = ioe (io >>= return . return)
ioeErr :: Err a -> IOE a
ioeErr = ioe . return
instance Functor IOE where fmap = liftM
instance Monad IOE where
return a = ioe (return (return a))
IOE c >>= f = IOE $ do
x <- c -- Err a
appIOE $ err ioeBad f x -- f :: a -> IOE a
fail = ioeBad
ioeBad :: String -> IOE a
ioeBad = ioe . return . Bad