Какими способами я могу выполнить то, что классные классы Haskell в OCaml? В принципе, я хочу написать полиморфную функцию, не пишу слишком много кода. Типичным способом полиморфизма является предоставление дополнительного аргумента, указывающего, что функция - это тип, над которым он сейчас работает. Например, допустим, что я хочу отсортировать список ints, я должен передать дополнительный компаратор функции.
type comparison = Lesser | Equal | Greater
my_sort : (a' -> a' -> comparison) -> 'a list -> 'a list
Есть ли вообще сказать OCaml, что мой тип сопоставим, не записывая функцию компаратора для каждого типа, который я хочу сортировать? Это означает, что моя функция сортировки будет выглядеть примерно так:
my_sort : 'a list -> 'a list