[project @ 2005-02-25 13:57:05 by simonpj]
[ghc-hetmet.git] / ghc / compiler / utils / Maybes.lhs
index 961da18..3c9bd69 100644 (file)
@@ -7,7 +7,8 @@
 module Maybes (
        module Maybe,           -- Re-export all of Maybe
 
-       MaybeErr(..),
+       MaybeErr(..),   -- Instance of Monad
+       failME,
 
        orElse, 
        mapCatMaybes,
@@ -16,10 +17,7 @@ module Maybes (
        expectJust,
        maybeToBool,
 
-       thenMaybe, seqMaybe, returnMaybe, failMaybe, 
-
-       thenMaB, returnMaB, failMaB
-
+       thenMaybe, seqMaybe, returnMaybe, failMaybe
     ) where
 
 #include "HsVersions.h"
@@ -113,20 +111,13 @@ Nothing  `orElse` y = y
 %************************************************************************
 
 \begin{code}
-data MaybeErr val err = Succeeded val | Failed err
-\end{code}
-
-\begin{code}
-thenMaB :: MaybeErr val1 err -> (val1 -> MaybeErr val2 err) -> MaybeErr val2 err
-thenMaB m k
-  = case m of
-      Succeeded v -> k v
-      Failed e   -> Failed e
+data MaybeErr err val = Succeeded val | Failed err
 
-returnMaB :: val -> MaybeErr val err
-returnMaB v = Succeeded v
+instance Monad (MaybeErr err) where
+  return v = Succeeded v
+  Succeeded v >>= k = k v
+  Failed e    >>= k = Failed e
 
-failMaB :: err -> MaybeErr val err
-failMaB e = Failed e
+failME :: err -> MaybeErr err val
+failME e = Failed e
 \end{code}
-