[project @ 1999-03-09 14:51:03 by sewardj]
[ghc-hetmet.git] / ghc / interpreter / lib / Maybe.hs
1 -----------------------------------------------------------------------------
2 -- Standard Library: Operations on the Maybe datatype
3 --
4 -- Suitable for use with Hugs 98
5 -----------------------------------------------------------------------------
6 module Maybe(
7     isJust, fromJust, fromMaybe, listToMaybe, maybeToList,
8     catMaybes, mapMaybe,
9
10     -- ... and what the Prelude exports
11     Maybe(Nothing, Just),
12     maybe
13     ) where
14
15 isJust                :: Maybe a -> Bool
16 isJust (Just a)        = True
17 isJust Nothing         = False
18
19 fromJust              :: Maybe a -> a
20 fromJust (Just a)      = a
21 fromJust Nothing       = error "Maybe.fromJust: Nothing"
22
23 fromMaybe             :: a -> Maybe a -> a
24 fromMaybe d Nothing    = d
25 fromMaybe d (Just a)   = a
26
27 maybeToList           :: Maybe a -> [a]
28 maybeToList Nothing    = []
29 maybeToList (Just a)   = [a]
30
31 listToMaybe           :: [a] -> Maybe a
32 listToMaybe []         = Nothing
33 listToMaybe (a:as)     = Just a
34  
35 catMaybes             :: [Maybe a] -> [a]
36 catMaybes ms           = [ m | Just m <- ms ]
37
38 mapMaybe              :: (a -> Maybe b) -> [a] -> [b]
39 mapMaybe f             = catMaybes . map f
40
41 -----------------------------------------------------------------------------