Перегрузка функции в OCaml

Я определил несколько типов:

type box = Box of int
type table = Table of int
type compare_result = Lt | Eq | Gt

Кажется, что в OCaml мы не можем определить 2 функции с одинаковыми имя, но разные типы аргументов:

let compare (a: box) (b: box): compare_result = (...)
let compare (a: table) (b: table): compare_result = (...)

let res_box = compare (Box 1) (Box 2) in (* which is supposed to call the first funciton *) 
let res_table = compare (Table 1) (Table 2) in (* which is supposed to call the second function *)

Так что, может ли кто-нибудь сказать мне, что есть альтернатива в OCaml для этого? Должны ли мы называть эти две функции по-разному?

8
задан Pascal Cuoq 8 July 2014 в 13:56
поделиться