The Maybe type encapsulates an optional value. A value of type
Maybe a either contains a value of type a (represented as Just a),
or it is empty (represented as Nothing). Using Maybe is a good way to
deal with errors or exceptional cases without resorting to drastic
measures such as error.
The Maybe type is also a monad. It is a simple kind of error monad, where all errors are represented by Nothing. A richer error monad can be built using the Either type.
Instances63Monad, MonadFix, MonadFail, Applicative, Foldable, Alternative, …
Monad MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.BaseFunctor MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadFix MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FixMonadFail MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FailApplicative MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.BaseFoldable MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.FoldableTraversable MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.TraversableAlternative MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadPlus MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadZip MaybeDefined in base-4.20.2.0 · Control.Monad.ZipEq1 MaybeDefined in base-4.20.2.0 · Data.Functor.ClassesOrd1 MaybeDefined in base-4.20.2.0 · Data.Functor.ClassesRead1 MaybeDefined in base-4.20.2.0 · Data.Functor.ClassesShow1 MaybeDefined in base-4.20.2.0 · Data.Functor.ClassesNFData1 MaybeDefined in deepseq-1.5.0.0 · Control.DeepSeqArbitrary1 MaybeDefined in QuickCheck-2.15.0.1 · Test.QuickCheck.ArbitraryMonadThrow MaybeDefined in exceptions-0.10.9 · Control.Monad.CatchHashable1 MaybeDefined in hashable-1.4.7.0 · Data.Hashable.ClassFunctor MaybeDefined in linear-base-0.4.0 · Data.Functor.Linear.Internal.FunctorTraversable MaybeDefined in linear-base-0.4.0 · Data.Functor.Linear.Internal.TraversableGeneric1 MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.GenericsMonadError () MaybeDefined in mtl-2.3.1 · Control.Monad.Error.ClassGeneric1 MaybeDefined in linear-generics-0.2.3 · Generics.Linear.Instances.Base · orphanLift a => Lift (Maybe a)Defined in template-haskell-2.22.0.0 · Language.Haskell.TH.SyntaxEq a => Eq (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.MaybeData a => Data (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.DataOrd a => Ord (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.MaybeRead a => Read (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.ReadShow a => Show (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.ShowGeneric (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.GenericsSemigroup a => Semigroup (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.BaseSemigroup a => Monoid (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.BaseLift a semigroup into Maybe forming a Monoid according to http://en.wikipedia.org/wiki/Monoid: "Any semigroup
Smay be turned into a monoid simply by adjoining an elementenot inSand defininge*e = eande*s = s = s*efor alls ∈ S."Since 4.11.0: constraint on inner
avalue generalised from Monoid to Semigroup.Storable a => Storable (Maybe a)Defined in linear-base-0.4.0 · Foreign.Marshal.Pure.Internal · orphanSingKind a => SingKind (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.GenericsNFData a => NFData (Maybe a)Defined in deepseq-1.5.0.0 · Control.DeepSeqPretty a => Pretty (Maybe a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClassPretty a => Pretty (Maybe a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClassFinite a => Finite (Maybe a)Defined in random-1.2.1.3 · System.Random.GFiniteArbitrary a => Arbitrary (Maybe a)Defined in QuickCheck-2.15.0.1 · Test.QuickCheck.ArbitraryCoArbitrary a => CoArbitrary (Maybe a)Defined in QuickCheck-2.15.0.1 · Test.QuickCheck.ArbitraryFunction a => Function (Maybe a)Defined in QuickCheck-2.15.0.1 · Test.QuickCheck.FunctionTestable prop => Testable (Maybe prop)Defined in QuickCheck-2.15.0.1 · Test.QuickCheck.PropertyBinary a => Binary (Maybe a)Defined in binary-0.8.9.3 · Data.Binary.ClassHashable a => Hashable (Maybe a)Defined in hashable-1.4.7.0 · Data.Hashable.ClassGeneric (Maybe a)Defined in linear-generics-0.2.3 · Generics.Linear.Instances.Base · orphanSemigroup a => Monoid (Maybe a)Defined in linear-base-0.4.0 · Data.Monoid.Linear.Internal.MonoidConsumable a => Consumable (Maybe a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.ConsumableDupable a => Dupable (Maybe a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.DupableSemigroup a => Semigroup (Maybe a)Defined in linear-base-0.4.0 · Data.Monoid.Linear.Internal.SemigroupMovable a => Movable (Maybe a)Defined in linear-base-0.4.0 · Data.Unrestricted.Linear.Internal.Movable(Consumable a, Eq a) => Eq (Maybe a)Defined in linear-base-0.4.0 · Data.Ord.Linear.Internal.Eq(Consumable a, Ord a) => Ord (Maybe a)Defined in linear-base-0.4.0 · Data.Ord.Linear.Internal.OrdKnownRepresentable a => KnownRepresentable (Maybe a)Defined in linear-base-0.4.0 · Foreign.Marshal.Pure.InternalRepresentable a => Representable (Maybe a)Defined in linear-base-0.4.0 · Foreign.Marshal.Pure.InternalSingI 'NothingDefined in ghc-internal-9.1003.0 · GHC.Internal.GenericsSingI a2 => SingI ('Just a2)Defined in ghc-internal-9.1003.0 · GHC.Internal.Genericstype Rep (Maybe a) = D1 ('MetaDataDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics"Maybe"
"GHC.Internal.Maybe"
"ghc-internal"
'False) (C1 ('MetaCons"Nothing"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Just"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))type Rep1 Maybe = D1 ('MetaDataDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics"Maybe"
"GHC.Internal.Maybe"
"ghc-internal"
'False) (C1 ('MetaCons"Nothing"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Just"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))type DemoteRep (Maybe a) = Maybe (DemoteRep a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Genericsdata SingDefined in ghc-internal-9.1003.0 · GHC.Internal.Genericstype Rep (Maybe a) = D1 ('MetaDataDefined in linear-generics-0.2.3 · Generics.Linear.Instances.Base · orphan"Maybe"
"GHC.Internal.Maybe"
"ghc-internal"
'False) (C1 ('MetaCons"Nothing"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Just"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))type Rep1 Maybe = D1 ('MetaDataDefined in linear-generics-0.2.3 · Generics.Linear.Instances.Base · orphan"Maybe"
"GHC.Internal.Maybe"
"ghc-internal"
'False) (C1 ('MetaCons"Nothing"
'PrefixI 'False) U1 :+: C1 ('MetaCons"Just"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))type AsKnown (Maybe a) = Maybe (AsKnown a)Defined in linear-base-0.4.0 · Foreign.Marshal.Pure.Internal