2014-02-05 52 views
5

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

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

我知道那些原始码不能从OCaml移植到JS,并且它们的实现应该取决于应用程序,但是对于核心,其实现数以千计,而我的程序只使用输出到stdout

在附注中,即使编译了一个简单的“hello world”项目,由于IO函数未在JS中实现,所以我遇到了麻烦。是否有一个“标准”的JS文件可以用于这个目的?例如替换caml_ml_output_charconsole.log和其他东西,以便模块可以编译为有用的东西,而无需编写任何自定义JavaScript?

+0

请不要使用反引号强调。他们是为了代码。请参阅http://stackoverflow.com/editing-help#code –

回答

1

是的,当使用Corejs_of_ocaml时,丢失原始图像是个问题。有core_kernel库。它是包含基本功能的Core的子集。来自core的UNIX相关功能不包括在Core_kernel中。如果我没有记错,从Core提取Core_kernel的主要原因是您的问题。

更新。 我失败了。看起来开发人员试图允许使用Core_kernel与js_of_ocaml,但without success。看来你现在不能这样做。他们正在等待OCaml命名空间。

+0

感谢您的答案!所以我该怎么做?改为打开'core_kernel'?我很困惑为什么丢失的原语应该与核心有关 - 如果我没有在我的代码中使用它们,它们是不是可以被安全地丢弃? –

+0

请不要使用反引号强调。他们是为了代码。见http://stackoverflow.com/editing-help#code –

+0

@PascalCuoq但它是代码,不是吗?我把库名称看作代码。 –

3

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

1

截至今天,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))))