1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use crate::{Apply, Functor, Pure}; /// An `Applicative` functor is anything which implements `Functor`, `Apply` and /// `Pure`. pub trait Applicative<A, F, B>: Functor<A, B> + Apply<A, F, B> + Pure<A> where F: Fn(A) -> B, { } impl<M, A, F, B> Applicative<A, F, B> for M where M: Functor<A, B> + Apply<A, F, B> + Pure<A>, F: Fn(A) -> B, { }