Maybe monoid returning the leftmost non-Nothing value.
First a is isomorphic to Alt Maybe a, but precedes it
historically.
Beware that Data.Monoid.First is different from
Data.Semigroup.First. The former returns the first non-Nothing,
so Data.Monoid.First Nothing <> x = x. The latter simply returns the first value,
thus Data.Semigroup.First Nothing <> x = Data.Semigroup.First Nothing.
Examples
First (Just "hello") <> First Nothing <> First (Just "world")First {getFirst = Just "hello"}
First Nothing <> memptyFirst {getFirst = Nothing}
Instances20Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
Monad FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidFunctor FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidMonadFix FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FixApplicative FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidFoldable FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.FoldableTraversable FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.TraversableMonadZip FirstDefined in base-4.20.2.0 · Control.Monad.ZipNFData1 FirstDefined in deepseq-1.5.0.0 · Control.DeepSeqGeneric1 FirstDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidEq a => Eq (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidData a => Data (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.DataOrd a => Ord (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidRead a => Read (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidShow a => Show (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidGeneric (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidSemigroup (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidMonoid (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidNFData a => NFData (First a)Defined in deepseq-1.5.0.0 · Control.DeepSeqtype Rep (First a) = D1 ('MetaDataDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Monoid"First"
"GHC.Internal.Data.Monoid"
"ghc-internal"
'True) (C1 ('MetaCons"First"
'PrefixI 'True) (S1 ('MetaSel ('Just"getFirst"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe a))))type Rep1 First = D1 ('MetaDataDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Monoid"First"
"GHC.Internal.Data.Monoid"
"ghc-internal"
'True) (C1 ('MetaCons"First"
'PrefixI 'True) (S1 ('MetaSel ('Just"getFirst"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Maybe)))