diff --git a/src/func/applicative_select.rs b/src/func/applicative_select.rs index 0f636ad..4eb0ee5 100644 --- a/src/func/applicative_select.rs +++ b/src/func/applicative_select.rs @@ -5,8 +5,10 @@ pub enum Selected<'a, A: 'a, B: 'a, T: ?Sized + WeakFunctor<'a>> { B(T::F, B), } +/// See [`ApplicativeSelect::select`]. pub type SelectedWrapped<'a, A, B, T> = Wrap<'a, Selected<'a, A, B, T>, T>; +/// Part of [`Applicative`] responsible for choosing the first value. pub trait ApplicativeSelect<'a>: Functor<'a> { fn select(fa: Self::F, fb: Self::F) -> SelectedWrapped<'a, A, B, Self> { Self::fmap(|a| Selected::A(a, fb), fa) @@ -14,6 +16,7 @@ pub trait ApplicativeSelect<'a>: Functor<'a> { } pub trait ApplicativeSelectExt<'a>: ApplicativeSelect<'a> { + /// Shorthand for [`Functor::fmap`]∘[`ApplicativeSelect::select`]. fn select_map( f: impl 'a + FnOnce(Selected<'a, A, B, Self>) -> C, fa: Self::F,