2014-02-05 48 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))))