3 isJust, fromJust, fromMaybe, listToMaybe, maybeToList,
4 catMaybes, mapMaybe, unfoldr ) where
9 isJust :: Maybe a -> Bool
10 isJust (Just a) = True
11 isJust Nothing = False
13 fromJust :: Maybe a -> a
15 fromJust Nothing = error "Maybe.fromJust: Nothing"
17 fromMaybe :: a -> Maybe a -> a
18 fromMaybe d Nothing = d
19 fromMaybe d (Just a) = a
21 maybeToList :: Maybe a -> [a]
22 maybeToList Nothing = []
23 maybeToList (Just a) = [a]
25 listToMaybe :: [a] -> Maybe a
26 listToMaybe [] = Nothing
27 listToMaybe (a:_) = Just a
29 catMaybes :: [Maybe a] -> [a]
30 catMaybes ms = [ m | Just m <- ms ]
32 mapMaybe :: (a -> Maybe b) -> [a] -> [b]
33 mapMaybe f = catMaybes . map f
35 unfoldr :: ([a] -> Maybe ([a], a)) -> [a] -> ([a],[a])
38 Just (x',y) -> let (ys,x'') = unfoldr f x' in (x'',y:ys)