X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FMaybe.hs;h=2f98c70e6eee655405db49719c330f2db790eb25;hb=HEAD;hp=9c86159956e7ff3f22be384c99ab65066968830f;hpb=0ff27fb0b00d271170a346d75ffe38cebabb3b11;p=ghc-base.git diff --git a/Data/Maybe.hs b/Data/Maybe.hs index 9c86159..2f98c70 100644 --- a/Data/Maybe.hs +++ b/Data/Maybe.hs @@ -1,4 +1,5 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude, DeriveGeneric #-} + ----------------------------------------------------------------------------- -- | -- Module : Data.Maybe @@ -6,7 +7,7 @@ -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org --- Stability : experimental +-- Stability : stable -- Portability : portable -- -- The Maybe type, and associated operations. @@ -16,23 +17,23 @@ module Data.Maybe ( Maybe(Nothing,Just)-- instance of: Eq, Ord, Show, Read, - -- Functor, Monad, MonadPlus + -- Functor, Monad, MonadPlus - , maybe -- :: b -> (a -> b) -> Maybe a -> b + , maybe -- :: b -> (a -> b) -> Maybe a -> b - , isJust -- :: Maybe a -> Bool - , isNothing -- :: Maybe a -> Bool - , fromJust -- :: Maybe a -> a - , fromMaybe -- :: a -> Maybe a -> a + , 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] + , maybeToList -- :: Maybe a -> [a] + , catMaybes -- :: [Maybe a] -> [a] + , mapMaybe -- :: (a -> Maybe b) -> [a] -> [b] ) where #ifdef __GLASGOW_HASKELL__ -import {-# SOURCE #-} GHC.Err ( error ) import GHC.Base +import GHC.Generics (Generic) #endif #ifdef __NHC__ @@ -44,7 +45,7 @@ import Maybe , fromJust , fromMaybe , listToMaybe - , maybeToList + , maybeToList , catMaybes , mapMaybe ) @@ -64,8 +65,8 @@ import Maybe -- monad, where all errors are represented by 'Nothing'. A richer -- error monad can be built using the 'Data.Either.Either' type. -data Maybe a = Nothing | Just a - deriving (Eq, Ord) +data Maybe a = Nothing | Just a + deriving (Eq, Ord, Generic) instance Functor Maybe where fmap _ Nothing = Nothing @@ -79,7 +80,7 @@ instance Monad Maybe where Nothing >> _ = Nothing return = Just - fail _ = Nothing + fail _ = Nothing -- --------------------------------------------------------------------------- -- Functions over Maybe @@ -87,7 +88,7 @@ instance Monad Maybe where -- | The 'maybe' function takes a default value, a function, and a 'Maybe' -- value. If the 'Maybe' value is 'Nothing', the function returns the -- default value. Otherwise, it applies the function to the value inside --- the 'Just' and returns that. +-- the 'Just' and returns the result. maybe :: b -> (a -> b) -> Maybe a -> b maybe n _ Nothing = n maybe _ f (Just x) = f x @@ -136,8 +137,8 @@ catMaybes ls = [x | Just x <- ls] -- | The 'mapMaybe' function is a version of 'map' which can throw -- out elements. In particular, the functional argument returns -- something of type @'Maybe' b@. If this is 'Nothing', no element --- is added on to the result list. If it just @'Just' a@, then @a@ is --- added on to the result. +-- is added on to the result list. If it just @'Just' b@, then @b@ is +-- included in the result list. mapMaybe :: (a -> Maybe b) -> [a] -> [b] mapMaybe _ [] = [] mapMaybe f (x:xs) =