有免费的OCaml到C翻译吗?

所以我有很好的OCaml代码(50000行)。 我想把它移植到C.那么有没有免费的OCaml到C翻译器?

这可能不是你想要的,但是你可以让OCaml编译器在C中转储它的运行时代码:

ocamlc -output-obj -o foo.c foo.ml 

你得到的基本上是字节码的静态转储。 结果将类似于:

 #include  CAMLextern void caml_startup_code( code_t code, asize_t code_size, char *data, asize_t data_size, char *section_table, asize_t section_table_size, char **argv); static int caml_code[] = { 0x00000054, 0x000003df, 0x00000029, 0x0000002a, 0x00000001, 0x00000000, /* ... */ } static char caml_data[] = { 132, 149, 166, 190, 0, 0, 3, 153, 0, 0, 0, 118, /* ... */ }; static char caml_sections[] = { 132, 149, 166, 190, 0, 0, 21, 203, 0, 0, 0, 117, /* ... */ }; /* ... */ void caml_startup(char ** argv) { caml_startup_code(caml_code, sizeof(caml_code), caml_data, sizeof(caml_data), caml_sections, sizeof(caml_sections), argv); } 

你可以编译它

 gcc -L/usr/lib/ocaml foo.c -lcamlrun -lm -lncurses 

有关更多信息,请参阅OCaml手册 。

C源代码编译器有一个OCaml字节码可执行文件: https : //github.com/ocaml-bytes/ocamlcc

因此,首先将代码编译为字节码可执行文件,然后使用ocamlcc。

OCamlJS项目将是一个很好的起点。 它将OCaml编译为JavaScript; 应该可以修改它以将OCaml编译为ActionScript。 编译为C可能会更多的工作 – 没有任何类型的垃圾收集 – 但并非不可能,特别是如果Adobe Alchemy提供API来满足其中一些需求。

如果我有一些OCaml代码,我想在浏览器中运行客户端(这似乎是基于对问题的评论的意图),我不得不说我的第一个想法是做一个

  • 使用类似OcamlJava的东西将OCaml编译为java字节码并使用Java web start或类似方法进行部署。
  • 移植到.NET上的端口到F#(Microsoft版本的OCaml),并使用MS提供的任何内容进行Web部署。

也许如果我真的疯了:

  • 使用Alchemy将OCaml解释器(我认为在’C’中实现)移植到Flash并让它运行我原始(未移植)代码的OCaml字节码。

虽然两阶段的OCaml-to-C,C-to-Flash并不吸引人。