This is exactly the same problem as your previous post. You are trying to define a non-regular type. I.e., if you expand the definition of job, you get:
type ('a,'b) batch = private < build : < create_batch : 'c.('a -> 'c) -> ('a,'c) batch; .. > -> ('a priority * 'a) list -> < create_batch : 'c.('b -> 'c) -> ('b,'c) batch; .. > ; .. > (not a correct definition because job itself is a private row type, but this is just to show explicitly the occurences of batch) All occurences of batch inside its own definition should have the same parameters ('a,'b), but here both have different parameters. I admit that the error message is a bit confusing because all parameters are variables, and their names are not preserved by the type-checker. If the name were preserved, this would be type ('a, 'c) batch should be ('a, 'b) Jacques Garrigue From: Jean Balthazar <jean.balthazar...@gmail.com> > I try to define the signature of three interdependant classes that should > then be derived and completed for various implementation. The code below > causes the strange error messsage: > > File "tmp.ml", line 4, characters 7-92: > In the definition of job, type ('a, 'b) batch should be ('a, 'c) > batch > > Can you explain what is wrong with this signature? > I was unable to find an answer to a similar problem in the archives. > > Thank you very much. > Jean > > ---------------------------------------------------------------------------- > > module type JOB = > sig > > type ('a, 'b) batch = private < build : 'a job -> ('a priority * 'a) list > -> 'b job; .. > > and 'b priority = private < next : 'b priority; .. > > and 'a job = private < create_batch : 'c.('a -> 'c) -> ('a, 'c) batch; > .. > > > end _______________________________________________ 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