let memorize o table = Hashtbl.add table (o :> < >) o
:>
是演员,但我不明白< >
里面的..
< ... >
OCaml 中对象类型的语法也是如此。这些方法进入<
and内部>
。< >
是不指定方法的对象类型;因此任何对象类型都可以向上转换为这种类型。这种类型通常没什么用,因为你不能用这种类型的值做任何事情(因为在 OCaml 中没有对象类型的向下转换,你永远不能把它变成你可以调用方法的东西)。
在这种情况下,他们将其用作哈希表的键类型。我真的不知道他们为什么要这样做。
< mi: ti>
是具有 type 方法的对象的mi
类型ti
。在这里,您强制o
转换为没有任何方法的对象,即所有对象类型的超类型(类似于Object
Java)。换句话说,表应该能够存储任何对象。