sig
  module type Mappable =
    sig
      type 'a mappable
      val map :
        ('-> 'b) ->
        'BatInterfaces.Mappable.mappable ->
        'BatInterfaces.Mappable.mappable
    end
  module type OrderedType =
    sig
      type t
      val compare :
        BatInterfaces.OrderedType.t -> BatInterfaces.OrderedType.t -> int
    end
  module type Monad =
    sig
      type 'a m
      val bind :
        'BatInterfaces.Monad.m ->
        ('-> 'BatInterfaces.Monad.m) -> 'BatInterfaces.Monad.m
      val return : '-> 'BatInterfaces.Monad.m
    end
end