module Monad: sig .. end
module type Monad = sig .. end
module type MonadPlus = sig .. end
module MonadDefault: functor (M : sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val (>>=) : 'a m ->
('a -> 'b m) -> 'b m
end) -> Monad with type +'a m = 'a M.m
module Monad_option: MonadPlus with type 'a m = 'a option
module Monad_list: MonadPlus with type 'a m = 'a list
module IO: sig .. end
module type MonadUtilsSig = sig .. end
module MonadUtils:
module type MonadPlusUtilsSig = sig .. end
module MonadPlusUtils:
module MonadPlusUtils_option: MonadPlusUtilsSig with type 'a m = 'a Monad_option.m
module MonadPlusUtils_list: MonadPlusUtilsSig with type 'a m = 'a Monad_list.m
module Monad_IO: MonadUtilsSig with type 'a m = 'a IO.m
module type Monad_state_type = sig .. end
module Monad_state: