Dumitru Potop-Butucaru wrote: > > Actually, I was looking for a way to specialize a whole module, > not just the associated type (**this** I knew how to do). > I would like to write something like: > > include module type of Set.Make(String) with 'a= int > > Is this possible?
I don't know about such a shortcut, but the following works and the interface is easier to use for a human: (* foo.mli *) type key = string type value = string type map val empty : map val is_empty : map -> bool val add : key -> value -> map -> map val find : key -> map -> value val remove : key -> map -> map val mem : key -> map -> bool val iter : (key -> value -> unit) -> map -> unit val map : (value -> value) -> map -> map val mapi : (key -> value -> value) -> map -> map val fold : (key -> value -> 'a -> 'a) -> map -> 'a -> 'a val compare : (value -> value -> int) -> map -> map -> int val equal : (value -> value -> bool) -> map -> map -> bool (* foo.ml *) module M = Map.Make (String) include M type value = string type map = string M.t Martin > Yours, > Jacky Potop > > > > > On 20/09/2010 16:57, Ashish Agarwal wrote: >> module M = Map.Make(String) >> >> type t = int M.t >> >> Type t is the type of maps from string's to int's. Or alternatively >> write a >> function that assumes 'a is some specific type: >> >> # let f m = M.fold (fun _ x y -> x + y) m 0;; >> val f : int M.t -> int =<fun> >> >> >> On Mon, Sep 20, 2010 at 10:35 AM, Dumitru Potop-Butucaru< >> dumitru.potop_butuc...@inria.fr> wrote: >> >>> Hello, >>> >>> I'm certain most users here will consider the question trivially simple, >>> but I browsed the documentation without finding a solution. >>> >>> The question is quite general: Given a polymorphic definition like >>> Map.Make(X), where >>> X is some module, how can I specialize its 'a type parameter, e.g. by >>> setting it to Y, so that >>> I have maps from X to Y ? >>> >>> Yours, >>> Jacky Potop >>> >>> _______________________________________________ >>> Caml-list mailing list. Subscription management: >>> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list >>> Archives: http://caml.inria.fr >>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >>> Bug reports: http://caml.inria.fr/bin/caml-bugs >>> >>> > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs -- http://mjambon.com/ _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs