【问题标题】:js_of_ocaml and Corejs_of_ocaml 和核心
【发布时间】:2014-02-05 12:59:33
【问题描述】:

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

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

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

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

【问题讨论】:

标签: ocaml js-of-ocaml


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    从今天开始,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))))
    

    【讨论】:

      【解决方案3】:

      是的,在使用 Corejs_of_ocaml 时,缺少原语是问题所在。有core_kernel 库。它是Core 的子集,包含基本功能。 core 中的 UNIX 相关功能不包括在 Core_kernel 中。如果我没记错的话,从Core 中提取Core_kernel 的主要原因是你的问题。

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

      【讨论】:

      • 感谢您的回答!所以我该怎么做?改为打开core_kernel?我很困惑为什么丢失的原语对核心很重要——如果我没有在我的代码中使用它们,它们不能被安全地丢弃吗?
      • 请不要使用反引号来强调。它们用于代码。见stackoverflow.com/editing-help#code
      • @PascalCuoq 但它是代码,不是吗?我认为库名称就是代码。
      • @cheshire 请仅对您在 OCaml 程序中键入的字符序列使用反引号。这就是人们使用它们的方式,如果每个人都以相同的方式使用它们,那就不那么模棱两可了。引用模块 Core_kernel 是可以接受的,但引用库 core_kernel 是不可接受的。
      • 现在是什么状态?
      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      相关资源
      最近更新 更多