higher_cat/
monad.rs

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