6

我对 OCaml 尤其是 js_of_ocaml 编译器很陌生。

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

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

顺便说一句,我什至在编译一个简单的“hello world”项目时都遇到了麻烦,因为 IO 函数没有在 JS 中实现。某处是否有可用于此目的的“标准”JS文件?例如替换caml_ml_output_charconsole.log和其他东西,以便模块可以编译成有用的东西,而无需编写任何自定义javascript?

4

3 回答 3

3

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

于 2014-02-05T19:15:21.017 回答
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))))
于 2017-05-27T19:46:33.587 回答
1

是的,缺少原语是使用Corewith时的问题js_of_ocaml。有core_kernel图书馆。它是Core包含基本功能的子集。与 UNIX 相关的函数core不包括Core_kernel. Core_kernel如果我没记错的话,提取的主要原因Core 是你的问题。

更新。我失败了。似乎开发人员已尝试允许Core_kernel与 js_of_ocaml 一起使用,但没有成功。看来你现在做不到了。他们正在等待 OCaml 命名空间。

于 2014-02-05T13:43:33.920 回答