Preface_specs.Monad_plusMonad_plus is a kind of Monoid on Monad. A Monad_plus is formally a Monad with neutral and combine. So a Monad_plus is also a Monad.
module type WITH_NEUTRAL_AND_COMBINE = sig ... endMinimal interfaces of Alternative without Monad.
module type WITH_MAP_AND_JOIN = sig ... endMinimal definition using neutral, combine, return, map and join.
module type WITH_KLEISLI_COMPOSITION = sig ... endMinimal definition using neutral, combine, return, compose_left_to_right.
module type WITH_BIND = sig ... endMinimal definition using neutral, combine, return, bind.
module type CORE = sig ... endBasis operations.
module type OPERATION = sig ... endAdditional operations.
module type INFIX = sig ... endInfix operators.
module type SYNTAX = sig ... endSyntax extensions
module type API = sig ... endThe complete interface of a Monad_plus.