On Mon, 13 Feb 2006, Basile STARYNKEVITCH wrote: > > Hello All, > > I'm a bit ashamed to ask such a quasi FAQ, but I don't understand why > the following does not compile > > > class virtual ['VarT,'NodeT] myclass = object(self) > method virtual v : 'VarT > method virtual n : 'NodeT > end;; > > type > 'a vart = [> `NothingV | `IntegerV of int | `NodeV of 'a nodet ] > and > 'a nodet = Empty | LeafI of int | ObLeaf of 'a instancet | Node of nodet list > and > 'a instancet = ('a,nodet) myclass constraint 'a = 'a vart Maybe something like that: class virtual ['VarT,'NodeT] myclass = object(self) method virtual v : 'VarT method virtual n : 'NodeT end;; (* 'a = 'VarT 'b = 'NodeT *) type ('a, 'b) nodet_poly = Empty | LeafI of int | ObLeaf of ('a, 'b) instancet_poly | Node of ('a, 'b) nodet_poly and ('a, 'b) instancet_poly = ('b, ('a, 'b) nodet_poly) myclass (* 'b = 'NodeT is constrained in vart *) type ('a, 'b) vart = 'b constraint 'b = [> `NothingV | `IntegerV of int | `NodeV of ('a, 'b) nodet_poly ] type ('a, 'b) instancet = (('a, 'b) vart, ('a, 'b) nodet_poly) myclass Martin > I'm getting the following error > > File "ess.ml", line 8, characters 12-66: > Unbound type parameter [..] > > which is positionned inside the bracket [] of vart line. > > Sorry for asking such a nearly FAQ; I thought that this would be a > nearly canical example of the use of constraint. > > The real context of all this is some scriptable Wiki-like application > which contains a (dynamically typed) interpreter (quasi scheme > semantics with some ml-like or ada-like syntax). The actual need is to > box in an open variant type (like vart above) all the "special" values > of the interpreter. > > > Again, my apologies for asking a nearly FAQ... (I googled a bit, but > did not understood the relation between the answers & my question). > > Regards > > -- > Basile STARYNKEVITCH http://starynkevitch.net/Basile/ > email: basilestarynkevitchnet > aliases: basiletunesorg = bstarynknerimnet > 8, rue de la Faïencerie, 92340 Bourg La Reine, France > > _______________________________________________ > 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 > -- Martin Jambon, PhD http://martin.jambon.free.fr Visit http://wikiomics.org, the Bioinformatics Howto Wiki