从C检查OCaml类型签名

时间:2011-08-08 13:28:48

标签: 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

1 个答案:

答案 0 :(得分:2)

NO WAI

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

更新

示例寄存器功能:

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

更新

  

我希望有可能将一个闭包/让绑定直接传递给C。

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

BTW这个问题是XY problem的完美例证。