1use crate::applicative::Applicative; 2use crate::chain::Chain; 3 4pub trait Monad<A, B>: Chain<B> + Applicative<A, B> {} 5 6impl<A, B> Monad<A, B> for Option<A> where {} 7 8impl<A, B, E> Monad<A, B> for Result<A, E> where {}