pub struct ProfunctorFirstAppliedBrand<Brand, A>(/* private fields */);Expand description
An adapter that partially applies a Profunctor to its first argument, creating a Functor.
§Examples
use fp_library::{
brands::*,
classes::functor::map,
};
let f = |x: i32| x + 1;
let g = map::<ProfunctorFirstAppliedBrand<RcFnBrand, i32>, _, _>(
|y: i32| y * 2,
std::rc::Rc::new(f) as std::rc::Rc<dyn Fn(i32) -> i32>,
);
assert_eq!(g(10), 22); // (10 + 1) * 2 = 22Trait Implementations§
Source§impl<Brand: Clone, A: Clone> Clone for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: Clone, A: Clone> Clone for ProfunctorFirstAppliedBrand<Brand, A>
Source§fn clone(&self) -> ProfunctorFirstAppliedBrand<Brand, A>
fn clone(&self) -> ProfunctorFirstAppliedBrand<Brand, A>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Brand: Profunctor, A: 'static> Functor for ProfunctorFirstAppliedBrand<Brand, A>
Functor instance for ProfunctorFirstAppliedBrand.
impl<Brand: Profunctor, A: 'static> Functor for ProfunctorFirstAppliedBrand<Brand, A>
Functor instance for ProfunctorFirstAppliedBrand.
Maps over the second (covariant) type parameter of a profunctor via Profunctor::rmap.
§Type Parameters
Brand: The profunctor brand.A: The fixed first type parameter.
Source§fn map<'a, B: 'a, C: 'a>(
f: impl Fn(B) -> C + 'a,
fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>,
) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, C>
fn map<'a, B: 'a, C: 'a>( f: impl Fn(B) -> C + 'a, fa: <Self as Kind_cdc7cd43dac7585f>::Of<'a, B>, ) -> <Self as Kind_cdc7cd43dac7585f>::Of<'a, C>
Map a function over the covariant type parameter.
§Type Signature
forall Brand A B C. Profunctor Brand => (B -> C, ProfunctorFirstApplied Brand A B) -> ProfunctorFirstApplied Brand A C
§Type Parameters
'a: The lifetime of the values.B: The input type.C: The output type.
§Parameters
f: The function to apply.fa: The profunctor value to map over.
§Returns
The mapped profunctor value.
§Examples
use fp_library::{
brands::*,
functions::*,
};
let f = std::rc::Rc::new(|x: i32| x + 1) as std::rc::Rc<dyn Fn(i32) -> i32>;
let g = map::<ProfunctorFirstAppliedBrand<RcFnBrand, i32>, _, _>(|x: i32| x * 2, f);
assert_eq!(g(5), 12); // (5 + 1) * 2Source§impl<Brand: Profunctor, A: 'static> Kind_cdc7cd43dac7585f for ProfunctorFirstAppliedBrand<Brand, A>
Generated implementation of Kind_cdc7cd43dac7585f for ProfunctorFirstAppliedBrand < Brand, A >.
impl<Brand: Profunctor, A: 'static> Kind_cdc7cd43dac7585f for ProfunctorFirstAppliedBrand<Brand, A>
Generated implementation of Kind_cdc7cd43dac7585f for ProfunctorFirstAppliedBrand < Brand, A >.
Source§type Of<'a, B: 'a> = <Brand as Kind_266801a817966495>::Of<'a, A, B>
type Of<'a, B: 'a> = <Brand as Kind_266801a817966495>::Of<'a, A, B>
The applied type.
Source§impl<Brand: Ord, A: Ord> Ord for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: Ord, A: Ord> Ord for ProfunctorFirstAppliedBrand<Brand, A>
Source§fn cmp(&self, other: &ProfunctorFirstAppliedBrand<Brand, A>) -> Ordering
fn cmp(&self, other: &ProfunctorFirstAppliedBrand<Brand, A>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<Brand: PartialEq, A: PartialEq> PartialEq for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: PartialEq, A: PartialEq> PartialEq for ProfunctorFirstAppliedBrand<Brand, A>
Source§fn eq(&self, other: &ProfunctorFirstAppliedBrand<Brand, A>) -> bool
fn eq(&self, other: &ProfunctorFirstAppliedBrand<Brand, A>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<Brand: PartialOrd, A: PartialOrd> PartialOrd for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: PartialOrd, A: PartialOrd> PartialOrd for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: Copy, A: Copy> Copy for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand: Eq, A: Eq> Eq for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> StructuralPartialEq for ProfunctorFirstAppliedBrand<Brand, A>
Auto Trait Implementations§
impl<Brand, A> Freeze for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> RefUnwindSafe for ProfunctorFirstAppliedBrand<Brand, A>where
Brand: RefUnwindSafe,
A: RefUnwindSafe,
impl<Brand, A> Send for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> Sync for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> Unpin for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> UnsafeUnpin for ProfunctorFirstAppliedBrand<Brand, A>
impl<Brand, A> UnwindSafe for ProfunctorFirstAppliedBrand<Brand, A>where
Brand: UnwindSafe,
A: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more