X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FMaybe.hs;h=e6039f2e4bea5280e7b9a09ee4af2e8da4f120a3;hb=9d3a29e4b8feff1387fc26d3d6431356e1c74d51;hp=69dd75f0cd0ca817685c2d6c2643f0ccab59a1f2;hpb=aaf764b3ad8b1816d68b5f27299eac125f08e1a5;p=ghc-base.git diff --git a/Data/Maybe.hs b/Data/Maybe.hs index 69dd75f..e6039f2 100644 --- a/Data/Maybe.hs +++ b/Data/Maybe.hs @@ -1,4 +1,5 @@ -{-# OPTIONS_GHC -fno-implicit-prelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude, DeriveRepresentable #-} + ----------------------------------------------------------------------------- -- | -- Module : Data.Maybe @@ -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 (Representable0) #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, Representable0) 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) =