我有一个使用可变变量的函数,该变量接受字符串并返回字符串。(它是一个读取评估打印循环解释器)
我尝试这样导出它:
let () =
Js.export_all
(object%js
method js_run_repl = Js.wrap_callback js_run_repl
end)
这是我正在导出的函数的片段
let js_run_repl str =
match String.(compare str "quit") with
| 0 -> "bye"
| _ -> ...
无论我的输入如何,它总是返回bye
,直接在 ocaml 中调用该函数会产生预期的行为。这是节点的输出:
> var mod = require('./main.bc');
undefined
> mod.js_run("constant P : Prop");
MlBytes { t: 0, c: 'bye', l: 3 }
>
为什么调用函数js_run
而不是js_run_repl
. 后者根据节点未定义。