如何在OCaml中创建具有多个参数的类型?

The*_*ema 5 polymorphism ocaml types

我正在尝试创建一个具有多个类型参数的类型.我知道如何使用一个参数创建一个类型:

type 'a foo = 'a * int
Run Code Online (Sandbox Code Playgroud)

但我需要有两个参数,以便我可以参数化'int'部分.我怎样才能做到这一点?

The*_*ema 8

这样做的方法是:

type ('a, 'b) foo = 'a * 'b
Run Code Online (Sandbox Code Playgroud)

类型参数不是curry,因此您需要以元组形式提供它们作为单个参数.一个很好的例子是Hashtbl模块:

type ('a, 'b) t 
Run Code Online (Sandbox Code Playgroud)

从"a到type"类型的哈希表类型.