这个ocaml片段是什么意思?

时间:2013-02-01 08:28:42

标签: ocaml

let memorize o table = Hashtbl.add table (o :> < >) o

:>已投放,但我不理解其中的< > ..

2 个答案:

答案 0 :(得分:2)

所以< ... >是OCaml中对象类型的语法。这些方法位于<>内。 < >是指定无方法的对象类型;因此任何对象类型都可以升级到这种类型。这种类型通常没用,因为你不能对这种类型的值做任何事情(因为在OCaml中没有对象类型的向下转换,你永远不能把它变成可以调用方法的东西)。

在这种情况下,他们使用它作为哈希表的密钥类型。我真的不知道为什么他们这样做。

答案 1 :(得分:1)

< mi: ti>是具有类型mi的方法ti的对象的类型。在这里,您将o强制转换为没有任何方法的对象,这是所有对象类型的超类型(类似于Java中的Object)。换句话说,该表应该能够存储任何对象。