将字符串转换为 lltype 以便利用 struct_set_body?
Converting string to lltype in order to utilize struct_set_body?
我正在尝试生成 LLVM ir,目前有这个
let fill_structs = StringMap.iter (fun k v -> L.struct_set_body k v false ) structs
(* more let...in statements *)
我收到的错误消息是关于我传递给 L.struct_set_body
的 'k'
StringMap.key
This expression has type string but an expression was expected of type
L.lltype
我对ocaml的理解很薄弱,所以我从here看到struct_set_body是这样做的
lltype -> lltype array -> bool -> unit
我假设这意味着它需要一个 lltype 数组和一个布尔值,以及 returns 单位?我不知道,我在考虑 C 或 Java 中的函数签名的方式,但我认为我不应该这样考虑。
另一件事是我不知道如何将我的字符串 'k' 变成一个 lltype 来完成我想做的事情。
Which I assume means it takes a lltype array and a boolean, and returns unit?
关闭,但需要另一个参数。它采用的第一个参数是 Llvm.lltype
类型。 Stringmap.iter
的签名意味着 k
是 string
,但将其传递给 Llvm.struct_set_body
会导致类型不匹配。
您需要将 string
值映射到 Llvm.lltype
值的东西。
正如@glennsl 在评论中建议的那样,执行此操作的最佳人选是 named_struct_type
,其类型为 llcontext
-> string -> lltype
.
您一直在问很多关于 OCaml 的非常基本的问题,这表明您需要做一些更多的介绍性工作。这里没有人会怀疑您正在投入的精力,但您的学习过程几乎可以肯定是“运行 才能走路”让您真正成功。当您尝试使用复杂模块时,无法正确读取 OCaml 类型等问题只会让您感到沮丧。
我正在尝试生成 LLVM ir,目前有这个
let fill_structs = StringMap.iter (fun k v -> L.struct_set_body k v false ) structs
(* more let...in statements *)
我收到的错误消息是关于我传递给 L.struct_set_body
的 'k'StringMap.key
This expression has type string but an expression was expected of type
L.lltype
我对ocaml的理解很薄弱,所以我从here看到struct_set_body是这样做的
lltype -> lltype array -> bool -> unit
我假设这意味着它需要一个 lltype 数组和一个布尔值,以及 returns 单位?我不知道,我在考虑 C 或 Java 中的函数签名的方式,但我认为我不应该这样考虑。
另一件事是我不知道如何将我的字符串 'k' 变成一个 lltype 来完成我想做的事情。
Which I assume means it takes a lltype array and a boolean, and returns unit?
关闭,但需要另一个参数。它采用的第一个参数是 Llvm.lltype
类型。 Stringmap.iter
的签名意味着 k
是 string
,但将其传递给 Llvm.struct_set_body
会导致类型不匹配。
您需要将 string
值映射到 Llvm.lltype
值的东西。
正如@glennsl 在评论中建议的那样,执行此操作的最佳人选是 named_struct_type
,其类型为 llcontext
-> string -> lltype
.
您一直在问很多关于 OCaml 的非常基本的问题,这表明您需要做一些更多的介绍性工作。这里没有人会怀疑您正在投入的精力,但您的学习过程几乎可以肯定是“运行 才能走路”让您真正成功。当您尝试使用复杂模块时,无法正确读取 OCaml 类型等问题只会让您感到沮丧。