Я пытаюсь создать тип, который имеет несколько параметров типа. Я знаю, как сделать тип с одним параметром:
type 'a foo = 'a * int
Но мне нужно иметь два параметра, чтобы я мог параметризировать часть 'int'. Как я могу это сделать?
Способ сделать это:
type ('a, 'b) foo = 'a * 'b
Параметры типа не каррируются, поэтому вам нужно указывать их в виде кортежа как единого параметра. Хорошим примером этого является модуль Hashtbl:
type ('a, 'b) t Тип хеш-таблиц из типа 'a набрать 'b.
type ('a, 'b) t
Тип хеш-таблиц из типа 'a набрать 'b.
# type ('a, 'b) couple = 'a * 'b ;;
Например ...