这是在 Ocaml 中进行转换的示例,不清楚这条线在做什么吗?
Is this an example of casting in Ocaml, unclear on what this line is doing?
我正在查看用于创建 LLVM IR 的 codegen.ml 文件。我不熟悉 Ocaml 所以只需要一些说明
let i32_t = L.i32_type context
and float_t = L.double_type context
let ltype_of_typ = function
A.Int -> i32_t
| A.Float -> float_t
in
let global_vars : L.llvalue StringMap.t =
let global_var m (t, n) =
let init = match t with
A.Float -> L.const_float (ltype_of_typ t) 0.0
所以对于这一行
A.Float -> L.const_float (ltype_of_typ t) 0.0
“->”后面的东西是干什么的?是否将 0.0 转换为浮点数?
代码正在调用带有两个参数的函数 L.const_float
。代码读起来就像是在设置一个从名称到值的全局映射。一些值似乎是固定浮点数的表示。除此之外我帮不了你,因为我不熟悉 LLVM。
但是 OCaml 中没有“类型转换”。标准库中有一些函数可以在数字类型之间进行转换(例如 int_of_float
)。但是没有用于转换类型的语言功能。 OCaml 是一种强类型语言,类型转换(如在 C 或 C++ 中)几乎违反了这一点。
在专门针对 LLVM 的论坛上提问可能会更有帮助。
我正在查看用于创建 LLVM IR 的 codegen.ml 文件。我不熟悉 Ocaml 所以只需要一些说明
let i32_t = L.i32_type context
and float_t = L.double_type context
let ltype_of_typ = function
A.Int -> i32_t
| A.Float -> float_t
in
let global_vars : L.llvalue StringMap.t =
let global_var m (t, n) =
let init = match t with
A.Float -> L.const_float (ltype_of_typ t) 0.0
所以对于这一行
A.Float -> L.const_float (ltype_of_typ t) 0.0
“->”后面的东西是干什么的?是否将 0.0 转换为浮点数?
代码正在调用带有两个参数的函数 L.const_float
。代码读起来就像是在设置一个从名称到值的全局映射。一些值似乎是固定浮点数的表示。除此之外我帮不了你,因为我不熟悉 LLVM。
但是 OCaml 中没有“类型转换”。标准库中有一些函数可以在数字类型之间进行转换(例如 int_of_float
)。但是没有用于转换类型的语言功能。 OCaml 是一种强类型语言,类型转换(如在 C 或 C++ 中)几乎违反了这一点。
在专门针对 LLVM 的论坛上提问可能会更有帮助。