我对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的情况下将模块编译成有用的东西吗?
答案 0 :(得分:3)
是的,可以使用Core_kernel
编译js_of_ocaml
,OCamlPro使用它编写了一个Try-OCaml版本。它需要修补其一些依赖项(sexplib,ounit等)并使用存储库中的最新版js_of_ocaml
,其中包括bigarray
实现。
答案 1 :(得分:3)
编译成字节码后。
运行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)
是的,将Core
与js_of_ocaml
一起使用时,缺少基元是个问题。有core_kernel
个库。它是Core
的子集,包含基本功能。来自core
的与UNIX相关的功能未包含在Core_kernel
中。如果我没记错的话,从Core_kernel
中提取Core
的主要原因就是你的问题。
<强>更新即可。
我失败了。似乎开发人员已尝试允许Core_kernel
使用js_of_ocaml但without success。看来你现在不能这样做。他们正在等待OCaml名称空间。