pub trait ApplySurrogate<F, AB, TofA>where
    Self: FunctorSurrogate<F, AB> + Equiv<To = F::T<AB>>,
    F: HKT1,{
    type ApplyOutput<A, B>: Equiv<To = F::T<B>>;

    // Required method
    fn apply_<A, B>(self, a: TofA) -> Self::ApplyOutput<A, B>
       where AB: F1Once<A, Ret = B>;
}
Expand description

Apply but with looser type constraints, allowing for blanket Apply implementations on types Equivalent to F<AB>

Required Associated Types§

source

type ApplyOutput<A, B>: Equiv<To = F::T<B>>

Type returned by apply_ that is conceptually the same as F::T<B>.

Related: FunctorSurrogate::Output

Required Methods§

source

fn apply_<A, B>(self, a: TofA) -> Self::ApplyOutput<A, B>where AB: F1Once<A, Ret = B>,

Apply the function A -> B contained in Self (F<A -> B>) to an instance of F<A> to get F<B>.

Implementors§

source§

impl<I, AB, TofA> ApplySurrogate<IO, AB, TofA> for Iwhere I: Equiv<To = IO<AB>> + IOLike<AB>,

§

type ApplyOutput<A, B> = Apply<A, B, AB, TofA, I>