package rocq-runtime
Module type Monad.DefSource
A definition of monads, each of the combinators is used in the Make functor.
The monadic laws must hold:
(x>>=f)>>=g=x>>=fun x' -> (f x'>>=g)return a >>= f=f ax>>=return=x
As well as the following identities:
x >> y=x >>= fun () -> ymap f x=x >>= fun x' -> f x'