[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2006-09-13 (08:10) |
From: | Jonathan Roewen <jonathan.roewen@g...> |
Subject: | Re: [Caml-list] Modules within classes |
It's the same at normal scope: type t = 'a;; doesn't compile. you need: type 'a t = 'a, which isn't compatible with input type for Set. I think the Set module is intentionally monomorphic... Jonathan On 9/13/06, Martin Hofmann <mhofmann@tcs.ifi.lmu.de> wrote: > Dear all, > > Can someone explain what is wrong here and perhaps suggest a workaround? > > class ['a] test ( l : 'a list) = > object > method result = > let module M = > struct > type t = 'a > let compare x y = > if x < y then -1 else if x > y then 1 else 0 > end > in > let module MSet = Set.Make(M) > in MSet.elements (List.fold_right MSet.add l MSet.empty) > end;; > > OCaml says: "Unbound type parameter 'a". > > Our aim is of course not to program sorting the umpteenth time but to > have a means for using Pervasives.Set within a parametrised class. > > The problem seems to be that although "class ['a]" binds 'a its use is > nevertheless disallowed in the scope of the class declaration. > > Many thanks in advance! > > Martin Hofmann (on behalf of Oliver Friedmann) > > _______________________________________________ > 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 >