First-to-finish synchronisation. Like Alt it is a monoid under <|>. First-to-finish is the additive monoid of near-semiring for which multiplication is given by LastToFinish.
-- | Return first available value.
--
readFirstMVar :: [TMVar a] -> STM a
readFirstMVar = runFirstToFinish
. foldMap (FirstToFinish . readTMVar)Constructors
Instances14Generic1, Monad, Functor, Applicative, Foldable, Traversable, …
Generic1 (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationMonad m => Monad (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationFunctor m => Functor (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationApplicative m => Applicative (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationFoldable m => Foldable (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationTraversable m => Traversable (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationAlternative m => Alternative (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationMonadPlus m => MonadPlus (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationContravariant m => Contravariant (FirstToFinish m)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationGeneric (FirstToFinish m a)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationAlternative m => Semigroup (FirstToFinish m a)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.SynchronisationAlternative m => Monoid (FirstToFinish m a)Defined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.Synchronisationtype Rep (FirstToFinish m a) = D1 ('MetaDataDefined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.Synchronisation"FirstToFinish"
"Data.Monoid.Synchronisation"
"monoidal-synchronisation-0.1.0.8-BUHIV7BtxMx2SykU5O9GeK"
'True) (C1 ('MetaCons"FirstToFinish"
'PrefixI 'True) (S1 ('MetaSel ('Just"runFirstToFinish"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m a))))type Rep1 (FirstToFinish m) = D1 ('MetaDataDefined in monoidal-synchronisation-0.1.0.8 · Data.Monoid.Synchronisation"FirstToFinish"
"Data.Monoid.Synchronisation"
"monoidal-synchronisation-0.1.0.8-BUHIV7BtxMx2SykU5O9GeK"
'True) (C1 ('MetaCons"FirstToFinish"
'PrefixI 'True) (S1 ('MetaSel ('Just"runFirstToFinish"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 m)))