2010/6/7 W Dan Meyer > I can imagine you could use an association list, function with pattern > matching, code generation tool (based on CamlP4), etc. I wrote a type-conv ( http://www.ocaml.info/home/ocaml_sources.html#type-conv ) generator for just that a few years ago : http://bluestorm.info/camlp4/ty_enum_to_int.ml.html Example use : type test = | A | B | C | D of bool with to_int Generated functions : let test_to_int = function | A -> 0 | B -> 1 | C -> 2 | D _ -> 3 let test_of_int = function | 0 -> A | 1 -> B | 2 -> C | 3 -> failwith "can't convert to a constructor with parameters: D" | _ -> invalid_argument "test_of_int"