从 C 检查 OCaml 类型签名

标签 c ocaml

假设我有一个 OCaml 函数

let _ = register "cbf_coh_insert" (fun k v -> print_endline ("Inserted key=" ^ k ^ " value=" ^ v))

这是一个接受两个参数的函数。在 C 端,我会用 caml_callback2(*caml_named_value("cbf_coh_insert"), k, v); 调用它。在 C 端,有没有办法检查参数的数量(在本例中为 2 个)是否匹配?除了我猜想调用它并试图捕获 SIGSEGV 之外。谢谢!

更新:some background .

最佳答案

没有围

这应该在编译时确保(手动或通过代码生成或通过解析和检查 C 和 OCaml 代码是否同步)

更新

示例寄存器函数:

let on_cbf_coh_insert (f : string -> string -> unit) = register "cbf_coh_insert" f

更新

I wish it was possible to pass a closure/let binding straight into C.

为什么你认为这是不可能的?查看一直执行此操作的现有绑定(bind)。

顺便说一句,这个问题是XY problem 的完美例证。 .

关于从 C 检查 OCaml 类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982849/

相关文章:

c - ftp 的数据通道如何工作?

compiler-construction - 创建编译器 : Learn OCaml or Stick With Java/C/C++

types - Ocaml 中 "type ...and "和 "let ...and "之间的范围不一致

winapi - 找不到用于链接的 Ocamlrun.lib

c - c文件操作中的段错误

c - 我创建了自己的 Linux shell,但在登录时得到 "mctrl: Permission denied"?

c - 没有自动 Proxy-Connection header 的 libcurl HTTP HEAD 请求

haskell - 在 OCaml 中派生实现

module - 如何在 OCaml 中使用集合?

c - 在信号处理程序中运行 TAILQ