js_of_ocaml和Core

时间:2014-02-05 12:59:34

标签: ocaml js-of-ocaml

我对OCaml和js_of_ocaml编译器都很陌生。

是否有人设法使用js_of_ocaml编译使用Jane Street Core的应用程序?在编译过程中我收到了很多“缺少原语”的警告,然后当我尝试用node运行它时,它们变成了一个实际的例外。

我知道那些是原始的,不能从OCaml移植到JS,并且它们的实现应该依赖于应用程序,但是对于核心,实际上有数千个,而我的程序只使用输出到stdout

另一方面,我甚至无法编译一个简单的“hello world”项目,因为在JS中没有实现IO功能。是否有某个“标准”JS文件可以用于此目的?例如用caml_ml_output_char和其他东西替换console.log,这样可以在不编写任何自定义javascript的情况下将模块编译成有用的东西吗?

3 个答案:

答案 0 :(得分:3)

是的,可以使用Core_kernel编译js_of_ocaml,OCamlPro使用它编写了一个Try-OCaml版本。它需要修补其一些依赖项(sexplib,ounit等)并使用存储库中的最新版js_of_ocaml,其中包括bigarray实现。

答案 1 :(得分:3)

截至今天,core_kernel版本0.9,它可以工作。

编译成字节码后。

运行js_of_ocaml

js_of_ocaml +weak.js +nat.js +base/runtime.js +core_kernel/runtime.js +bin_prot/runtime.js main.bc

或直接在jbuilder中添加js_of_ocaml。

(js_of_ocaml (
    (flags (+weak.js +nat.js +base/runtime.js +core_kernel/runtime.js +bin_prot/runtime.js))))

答案 2 :(得分:1)

是的,将Corejs_of_ocaml一起使用时,缺少基元是个问题。有core_kernel个库。它是Core的子集,包含基本功能。来自core的与UNIX相关的功能未包含在Core_kernel中。如果我没记错的话,从Core_kernel中提取Core的主要原因就是你的问题。

<强>更新即可。 我失败了。似乎开发人员已尝试允许Core_kernel使用js_of_ocaml但without success。看来你现在不能这样做。他们正在等待OCaml名称空间。