pub trait Monad: Applicative {
fn bind<B, F: Fn(Self::Inner) -> Self::Wrapped<B>>(
ma: Self::Wrapped<Self::Inner>,
f: F
) -> Self::Wrapped<B>;
fn return(a: Self::Inner) -> Self::Wrapped<Self::Inner> { ... }
}
pub trait Monad: Applicative {
fn bind<B, F: Fn(Self::Inner) -> Self::Wrapped<B>>(
ma: Self::Wrapped<Self::Inner>,
f: F
) -> Self::Wrapped<B>;
fn return(a: Self::Inner) -> Self::Wrapped<Self::Inner> { ... }
}