sig
  module type Mappable =
    sig
      type 'a mappable
      val map :
        ('a -> 'b) ->
        'a BatInterfaces.Mappable.mappable ->
        'b 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 :
        'a BatInterfaces.Monad.m ->
        ('a -> 'b BatInterfaces.Monad.m) -> 'b BatInterfaces.Monad.m
      val return : 'a -> 'a BatInterfaces.Monad.m
    end
end