module Maybe( isJust, fromJust, fromMaybe, listToMaybe, maybeToList, catMaybes, mapMaybe, unfoldr ) where isJust :: Maybe a -> Bool fromJust :: Maybe a -> a fromMaybe :: a -> Maybe a -> a listToMaybe :: [a] -> Maybe a maybeToList :: Maybe a -> [a] findMaybe :: (a -> Bool) -> [a] -> Maybe a catMaybes :: [Maybe a] -> [a] mapMaybe :: (a -> Maybe b) -> [a] -> [b] unfoldr :: (a -> Maybe (b, a)) -> a -> (a,[b]) |
The type constructor Maybe is defined in Prelude as
data Maybe a = Nothing | Just a
The purpose of the Maybe type is to provide a method of dealing with
illegal or optional values without terminating the program, as would
happen if error were used, and without using IOError from the IO
monad, which would cause the expression to become monadic. A correct
result is encapsulated by wrapping it in Just; an incorrect result
is returned as Nothing.
Most of the functions from this module are easily understood from the definitions
given here. The unfoldr function undoes a foldr operation,
returning the original initialiser and list of arguments. Note that,
in general, only invertable functions can be unfolded.
unfoldr f' (foldr f z xs) == (z,xs)
if the following holds:
f' (f x y) = Just (x,y)
f' z = Nothing
Other operations on Maybe are provided as part of the monadic classes in the Prelude.