use crate::apply::Apply;
use crate::pure::Pure;

pub trait Applicative<A, F, B>: Apply<A, F, B> + Pure<A>
where
    F: FnOnce(A) -> B,
{
}

impl<A, F, B> Applicative<A, F, B> for Option<A> where F: FnOnce(A) -> B {}
