pub trait Monad<O> {
type Inner;
fn bind<F>(t: Self, f: F) -> O
where
F: FnMut(Self::Inner) -> O;
fn ret(_: Self::Inner) -> Self;
}
pub trait Monad<O> {
type Inner;
fn bind<F>(t: Self, f: F) -> O
where
F: FnMut(Self::Inner) -> O;
fn ret(_: Self::Inner) -> Self;
}