Existe-t-il un traducteur OCaml en C gratuit?

J’ai donc un bon code OCaml (50000 lignes). Je souhaite le porter sur C. Y a-t-il un traducteur OCaml en C gratuit?

Ce n’est probablement pas ce que vous voulez, mais vous pouvez demander au compilateur OCaml de vider son code d’exécution en C:

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

Ce que vous obtenez est essentiellement un vidage statique du bytecode. Le résultat ressemblera à quelque chose comme:

 #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); } 

Vous pouvez le comstackr avec

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

Pour plus d’informations, reportez-vous au manuel OCaml .

Il existe un fichier exécutable de bytecode OCaml dans le compilateur de code source C: https://github.com/ocaml-bytes/ocamlcc

Donc, commencez par comstackr votre code en un exécutable bytecode, puis utilisez ocamlcc.

Le projet OCamlJS serait un bon sharepoint départ. Il comstack OCaml en JavaScript; il devrait être possible de le modifier pour comstackr OCaml en ActionScript. Comstackr en C nécessiterait sans doute plus de travail – pas de récupération de place, mais pas impossible, surtout si Adobe Alchemy fournit des API pour répondre à certains de ces besoins.

Si j’avais du code OCaml que je voulais exécuter côté client “dans le navigateur” (ce qui semble être votre intention basée sur les commentaires avec la question), je dois dire que ma première pensée serait de faire l’une des choses suivantes:

  • Utilisez quelque chose comme OcamlJava pour comstackr OCaml en bytecode java et déployez-le à l’aide de Java Web Start ou similaire.
  • Port to F # (version Microsoft d’OCaml) s’exécutant sur .NET et utilisez ce que MS fournit pour le déployer sur le Web.

Et peut-être que si j’étais vraiment fou:

  • Portez l’interpréteur OCaml (qui, à mon avis, est implémenté en ‘C’) en Flash avec Alchemy et faites-le exécuter le bytecode OCaml de mon code d’origine (non importé).

Un OCaml-to-C et un C-to-Flash en deux étapes ne fait toutefois pas appel.