haskell2010-1.0.0.0: Data/Maybe.hs
module Data.Maybe (
-- * The @Maybe@ type and operations
Maybe(Nothing,Just)-- instance of: Eq, Ord, Show, Read,
-- Functor, Monad, MonadPlus
, maybe -- :: b -> (a -> b) -> Maybe a -> b
, isJust -- :: Maybe a -> Bool
, isNothing -- :: Maybe a -> Bool
, fromJust -- :: Maybe a -> a
, fromMaybe -- :: a -> Maybe a -> a
, listToMaybe -- :: [a] -> Maybe a
, maybeToList -- :: Maybe a -> [a]
, catMaybes -- :: [Maybe a] -> [a]
, mapMaybe -- :: (a -> Maybe b) -> [a] -> [b]
-- * Specification
-- $code
) where
import "base" Data.Maybe
{- $code
> module Data.Maybe(
> Maybe(Nothing, Just),
> isJust, isNothing,
> fromJust, fromMaybe, listToMaybe, maybeToList,
> catMaybes, mapMaybe,
> maybe
> ) where
>
> maybe :: b -> (a -> b) -> Maybe a -> b
> maybe n _ Nothing = n
> maybe _ f (Just x) = f x
>
> isJust :: Maybe a -> Bool
> isJust (Just a) = True
> isJust Nothing = False
>
> isNothing :: Maybe a -> Bool
> isNothing = not . isJust
>
> fromJust :: Maybe a -> a
> fromJust (Just a) = a
> fromJust Nothing = error "Maybe.fromJust: Nothing"
>
> fromMaybe :: a -> Maybe a -> a
> fromMaybe d Nothing = d
> fromMaybe d (Just a) = a
>
> maybeToList :: Maybe a -> [a]
> maybeToList Nothing = []
> maybeToList (Just a) = [a]
>
> listToMaybe :: [a] -> Maybe a
> listToMaybe [] = Nothing
> listToMaybe (a:_) = Just a
>
> catMaybes :: [Maybe a] -> [a]
> catMaybes ms = [ m | Just m <- ms ]
>
> mapMaybe :: (a -> Maybe b) -> [a] -> [b]
> mapMaybe f = catMaybes . map f
-}