Deriving_monadmodule type Monad = sig ... endmodule type MonadPlus = sig ... endmodule MonadDefault (M : sig ... end) : Monad with type +'a m = 'a M.mmodule Monad_option : MonadPlus with type 'a m = 'a optionmodule Monad_list : MonadPlus with type 'a m = 'a listmodule IO : sig ... endmodule type MonadUtilsSig = sig ... endmodule MonadUtils (M : Monad) : MonadUtilsSig with type 'a m = 'a M.mmodule type MonadPlusUtilsSig = sig ... endmodule MonadPlusUtils
(M : MonadPlus) :
MonadPlusUtilsSig with type 'a m = 'a M.mmodule MonadPlusUtils_option :
MonadPlusUtilsSig with type 'a m = 'a Monad_option.mmodule MonadPlusUtils_list : MonadPlusUtilsSig with type 'a m = 'a Monad_list.mmodule Monad_IO : MonadUtilsSig with type 'a m = 'a IO.mmodule type Monad_state_type = sig ... endmodule Monad_state
(S : sig ... end) :
Monad_state_type with type state = S.state