OCaml backend: polymoprhic data-types