Делая некоторые предположения относительно вашего варианта использования:
type i_or_f = Int of int | Float of float;;
let conv x = match x with Int i -> float_of_int i | Float f -> f;;
i_or_f
- это полиморфный тип, представляющий собой int или float.
utop # conv (Int 4);;
- : float = 4.
utop # conv (Float 4.);;
- : float = 4.
Это то, о чем ты думаешь?