Эквивалентные типы OCaml

Я создаю две библиотеки в OCaml, которые содержат один и тот же тип варианта. Детали варианта не слишком важны, за исключением того, что он действительно большой, и было бы неприятно писать функции преобразования вручную за это. s фактически перечисление bfd_architecture, преобразованное из C с использованием ocamlidl).

Сейчас я пишу программу, используя две библиотеки. В частности, я вызываю A.f, который возвращает значение A.variant_type, и мне нужно использовать это значение при вызове B.g, который принимает значение B.variant_type в качестве входных данных.

Есть ли способ сообщить OCaml, что A.variant_type и B.variant_type действительно являются одним и тем же типом, и поэтому можно преобразовать значение из одного в другое? Библиотеки независимы, поэтому они не должны ссылаться друг на друга. Прямо сейчас я использую Obj.magic для преобразования, но это взлом.

6
задан Ed McMan 15 February 2012 в 15:56
поделиться