X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FMaybes.lhs;h=6dd9251e66ce17106bbcab40cecfece725572814;hb=8ddfc3c10a9d08e11812b5564da291d7024d5fc8;hp=98efdb7fa13446a439185766d7d8231f317e35f4;hpb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/Maybes.lhs b/ghc/compiler/utils/Maybes.lhs index 98efdb7..6dd9251 100644 --- a/ghc/compiler/utils/Maybes.lhs +++ b/ghc/compiler/utils/Maybes.lhs @@ -5,9 +5,10 @@ \begin{code} module Maybes ( --- Maybe(..), -- no, it's in 1.3 + Maybe2(..), Maybe3(..), MaybeErr(..), + orElse, mapMaybe, allMaybes, firstJust, @@ -29,6 +30,21 @@ module Maybes ( #include "HsVersions.h" import Maybe( catMaybes, mapMaybe ) + + +infixr 4 `orElse` +\end{code} + + +%************************************************************************ +%* * +\subsection[Maybe2,3 types]{The @Maybe2@ and @Maybe3@ types} +%* * +%************************************************************************ + +\begin{code} +data Maybe2 a b = Just2 a b | Nothing2 deriving (Eq,Show) +data Maybe3 a b c = Just3 a b c | Nothing3 deriving (Eq,Show) \end{code} @@ -96,6 +112,10 @@ returnMaybe = Just failMaybe :: Maybe a failMaybe = Nothing + +orElse :: Maybe a -> a -> a +(Just x) `orElse` y = x +Nothing `orElse` y = y \end{code} Lookup functions @@ -165,3 +185,4 @@ returnMaB v = Succeeded v failMaB :: err -> MaybeErr val err failMaB e = Failed e \end{code} +