X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FMaybes.lhs;h=353c3b5a5c32ecccd80a0d265f7b9ad01e86522a;hb=5e34dfe261bf18325fc035ed92f716f3a6249142;hp=6dd9251e66ce17106bbcab40cecfece725572814;hpb=111cee3f1ad93816cb828e38b38521d85c3bcebb;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/Maybes.lhs b/ghc/compiler/utils/Maybes.lhs index 6dd9251..353c3b5 100644 --- a/ghc/compiler/utils/Maybes.lhs +++ b/ghc/compiler/utils/Maybes.lhs @@ -5,7 +5,6 @@ \begin{code} module Maybes ( - Maybe2(..), Maybe3(..), MaybeErr(..), orElse, @@ -15,16 +14,10 @@ module Maybes ( expectJust, maybeToBool, - assocMaybe, - mkLookupFun, mkLookupFunDef, + thenMaybe, seqMaybe, returnMaybe, failMaybe, catMaybes, + + thenMaB, returnMaB, failMaB - failMaB, - failMaybe, - seqMaybe, - returnMaB, - returnMaybe, - thenMaB, - catMaybes ) where #include "HsVersions.h" @@ -35,19 +28,6 @@ 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} - - %************************************************************************ %* * \subsection[Maybe type]{The @Maybe@ type} @@ -107,6 +87,11 @@ seqMaybe :: Maybe a -> Maybe a -> Maybe a seqMaybe (Just x) _ = Just x seqMaybe Nothing my = my +thenMaybe :: Maybe a -> (a -> Maybe b) -> Maybe b +thenMaybe ma mb = case ma of + Just x -> mb x + Nothing -> Nothing + returnMaybe :: a -> Maybe a returnMaybe = Just @@ -118,49 +103,6 @@ orElse :: Maybe a -> a -> a Nothing `orElse` y = y \end{code} -Lookup functions -~~~~~~~~~~~~~~~~ - -@assocMaybe@ looks up in an assocation list, returning -@Nothing@ if it fails. - -\begin{code} -assocMaybe :: (Eq a) => [(a,b)] -> a -> Maybe b - -assocMaybe alist key - = lookup alist - where - lookup [] = Nothing - lookup ((tv,ty):rest) = if key == tv then Just ty else lookup rest -\end{code} - -@mkLookupFun eq alist@ is a function which looks up -its argument in the association list @alist@, returning a Maybe type. -@mkLookupFunDef@ is similar except that it is given a value to return -on failure. - -\begin{code} -mkLookupFun :: (key -> key -> Bool) -- Equality predicate - -> [(key,val)] -- The assoc list - -> key -- The key - -> Maybe val -- The corresponding value - -mkLookupFun eq alist s - = case [a | (s',a) <- alist, s' `eq` s] of - [] -> Nothing - (a:_) -> Just a - -mkLookupFunDef :: (key -> key -> Bool) -- Equality predicate - -> [(key,val)] -- The assoc list - -> val -- Value to return on failure - -> key -- The key - -> val -- The corresponding value - -mkLookupFunDef eq alist deflt s - = case [a | (s',a) <- alist, s' `eq` s] of - [] -> deflt - (a:_) -> a -\end{code} %************************************************************************ %* *