sig
  module type S =
    sig
      type 'a m
      val bind : 'a m -> ('-> 'b m) -> 'b m
      val return : '-> 'a m
    end
end