Version française
Home     About     Download     Resources     Contact us    
Browse thread
Converting variants with only constant constructors to integers
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: bluestorm <bluestorm.dylc@g...>
Subject: Re: [Caml-list] Converting variants with only constant constructors to integers
2010/6/7 W Dan Meyer <wojciech.meyer@googlemail.com>
> 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"