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