On 28-02-2010, Jianzhou Zhao <jianz...@seas.upenn.edu> wrote: > On Wed, Feb 24, 2010 at 11:42 AM, Sylvain Le Gall <sylv...@le-gall.net> wrote: >> On 24-02-2010, Jean Yang <jeany...@csail.mit.edu> wrote: >> Please have a look at: >> http://caml.inria.fr/mantis/view.php?id=4803 >> >> This section is misleading. You should use hash_variant for `VConstr. >> >> In your case VConstr of int will be Block with size = 1 and tag = 0; >> first non-constant constructor and first field contains Value_int(...) > > If I am creating an OCaml variant (string option) from C, say using 'alloc', > does it matter which tag I am using for 'some'? Can it be only tag 0? > I was looking at LLVM OCamling bindings, sometimes the 'some' is > also of 'tag 1', which confused me.
I think it is an error, but since there is only one possibility in the case of Some, maybe it is not important (i.e. you can distingish between the two variant None | Some just looking at the fact there are block or not). > If my variant is A | B | C of int | D of int, does C have to start from tag 0? > and D must be 1? Similarly, does A have to be assigned into Val_int(0), > and B is from 1? Yes. At least this is what I understand from section "18.3.4 Concrete types" of the OCaml manual. As a matter of fact, I never had problems following this convention before. Regards, Sylvain Le Gall _______________________________________________ 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