# Module type Monad_intf.Monad

    module type Monad = sig .. end

    module type Basic = Monad_intf.Basic

    module type Basic2 = Monad_intf.Basic2

    module type Infix = Monad_intf.Infix

    module type Infix2 = Monad_intf.Infix2

    module type S = Monad_intf.S

    module type S2 = Monad_intf.S2

    module Make: functor (X : Basic) -> S   with type  'a      t :=  'a      X.t

    module Make2: functor (X : Basic2) -> S2  with type ('a, 'e) t := ('a, 'e) X.t

    module Ident: S  with type 'a t = 'a