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, Functor, MonadFix, MonadFail, Applicative, Foldable, …
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.DeepSeqMonadThrow MaybeDefined in exceptions-0.10.9 · Control.Monad.CatchHashable1 MaybeDefined in hashable-1.4.7.0 · Data.Hashable.ClassAlt MaybeDefined in semigroupoids-6.0.1 · Data.Functor.AltApply MaybeDefined in semigroupoids-6.0.1 · Data.Functor.Bind.ClassBind MaybeDefined in semigroupoids-6.0.1 · Data.Functor.Bind.ClassExtend MaybeDefined in semigroupoids-6.0.1 · Data.Functor.ExtendPlus MaybeDefined in semigroupoids-6.0.1 · Data.Functor.PlusInvariant MaybeDefined in invariant-0.6.4 · Data.Functor.InvariantSelective MaybeDefined in selective-0.7.0.1 · Control.SelectiveFoldableWithKey MaybeDefined in keys-3.12.3 · Data.KeyIndexable MaybeDefined in keys-3.12.3 · Data.KeyKeyed MaybeDefined in keys-3.12.3 · Data.KeyLookup MaybeDefined in keys-3.12.3 · Data.KeyTraversableWithKey MaybeDefined in keys-3.12.3 · Data.KeyZip MaybeDefined in keys-3.12.3 · Data.KeyZipWithKey MaybeDefined in keys-3.12.3 · Data.KeyPointed MaybeDefined in pointed-5.0.4 · Data.PointedGeneric1 MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.GenericsMonadError () MaybeDefined in mtl-2.3.1 · Control.Monad.Error.ClassFoldableWithIndex () MaybeDefined in indexed-traversable-0.1.4 · WithIndexFunctorWithIndex () MaybeDefined in indexed-traversable-0.1.4 · WithIndexTraversableWithIndex () MaybeDefined in indexed-traversable-0.1.4 · WithIndexMonadBase Maybe MaybeDefined in transformers-base-0.4.6 · Control.Monad.BaseComonadCofree Maybe NonEmptyDefined in free-5.2 · Control.Comonad.Cofree.ClassLift 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.SingKind 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.GFiniteBinary 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.ClassDefault (Maybe a)Defined in data-default-0.8.0.1 · Data.Default.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 Key Maybe = ()Defined in keys-3.12.3 · Data.Key