1 -----------------------------------------------------------------------------
2 -- Standard Library: Operations on the Maybe datatype
4 -- Suitable for use with Hugs 98
5 -----------------------------------------------------------------------------
7 isJust, fromJust, fromMaybe, listToMaybe, maybeToList,
10 -- ... and what the Prelude exports
15 isJust :: Maybe a -> Bool
16 isJust (Just a) = True
17 isJust Nothing = False
19 fromJust :: Maybe a -> a
21 fromJust Nothing = error "Maybe.fromJust: Nothing"
23 fromMaybe :: a -> Maybe a -> a
24 fromMaybe d Nothing = d
25 fromMaybe d (Just a) = a
27 maybeToList :: Maybe a -> [a]
28 maybeToList Nothing = []
29 maybeToList (Just a) = [a]
31 listToMaybe :: [a] -> Maybe a
32 listToMaybe [] = Nothing
33 listToMaybe (a:as) = Just a
35 catMaybes :: [Maybe a] -> [a]
36 catMaybes ms = [ m | Just m <- ms ]
38 mapMaybe :: (a -> Maybe b) -> [a] -> [b]
39 mapMaybe f = catMaybes . map f
41 -----------------------------------------------------------------------------