The Haskell 98 Report
top | back | next | contents | function index
module Maybe( isJust, isNothing, fromJust, fromMaybe, listToMaybe, maybeToList, catMaybes, mapMaybe, -- ...and what the Prelude exports Maybe(Nothing, Just), maybe ) where isJust, 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] |
型構成子 Maybe は Prelude で以下のように定義されている。
data Maybe a = Nothing | Just a
Maybe 型の目的は不正なあるいはオプショナルな値を
error を使ったときのように、プログラムを停止させることなく、
また、IO モナドから IOError を使って、式を
モナドにしてしまうことなく、扱えるようにすることである。正しい
結果は、Just で包まれ、不正な結果は Noting となる。
Maybe 上のここにある以外の演算がプレリュードのモナドクラス の部分で用意されている。
module Maybe(
isJust, isNothing,
fromJust, fromMaybe, listToMaybe, maybeToList,
catMaybes, mapMaybe,
-- ...and what the Prelude exports
Maybe(Nothing, Just),
maybe
) where
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
The Haskell 98 Report
top | back | next | contents | function index
December 2002