JavaScriptの新しい機能です。js_of_ocaml
を使用しようとしています。js_of_ocamlによって生成された関数を呼び出す方法は?
私が最初に非常に単純なcubes.ml
を書いた:
let simple (a: int) =
a + 1234
そして、それを遵守:ここ
js_of_ocaml cubes.byte
が生成cubes.jsです:
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \
-syntax camlp4o -linkpkg -o cubes.byte cubes.ml
は、JavaScriptファイルを生成しました。このファイルには1234
または関数名simple
が見つかりませんでした。
別のJavaScriptファイルHome.js
があります。callSimple
には、cubes.js
で生成されたものを呼び出すことができます。しかし、私はそれを書く方法を知らない。誰でも助けてくれますか?
(function() {
...
function callSimple(a) {
return ???;
};
...
})();
編集1:
私は@EdgarAroutiounianによって提案された解決策を試してみました:
(* cubes.ml *)
let() =
Js.Unsafe.global##.jscode := (object%js
val simple = Js.wrap_meth_callback
(fun a -> a + 1234)
val speak = Js.wrap_meth_callback
(fun() -> print_endline "hello")
end)
それはコンパイルでしたが、それが正しい出力を返しませんでした:
書き込む場合home.js
:
confirm(jscode.simple(10)); // 1244 is expected
confirm(jscode.speak()); // "hello" as string is expected
最初の行はfunction (a){return p(c,aM(b,a))}
を返し、2行目は0
を返します。彼らは私が期待しているものではありません。
@antonrov提案されている編集内容が間違っていて、投稿のセマンティクスが変更されています。 –
私はあなたが私に言及していると思います...あなたの意図するセマンティクスを詳しく教えてください。コンソールに表示する内容を指定しておけばいいと思います。 –
@EdgarAroutiounianあなたが提案した内容はコンパイルされましたが、出力は私が期待するものではありません。私の更新されたOPを見てください... – SoftTimur