ajhc-0.8.0.1: lib/haskell-extras/Data/Maybe.hs
{-# OPTIONS_JHC -fno-prelude #-}
module Data.Maybe (
Maybe(Nothing, Just), maybe, isJust, isNothing, fromJust, fromMaybe,
listToMaybe, maybeToList, catMaybes, mapMaybe
) where
import Jhc.Maybe
import Jhc.Order
import Jhc.Basics
import Jhc.IO
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