我正在使用ocaml和它的llvm绑定来编写一个玩具编程语言/编译器。我想要hashtable/hashmap作为我的语言的内置数据结构,但是我对如何处理它们感到困惑。我知道llvm c++ api有一个ADT目录,其中包含一组数据结构,可以满足我的需要,但我不知道如何使用ocaml来调用它们。如果任何人都有关于如何在llvm中使用/实现这些数据结构的有用资源(要么通过ocaml绑定,要么直接使用IR,而不是c++ api),这将是有帮助的。
假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出现在定义中的任何地方$ oc