Ich habe mir gerade das C-Interface von Objective Caml angesehen. Ich muß zugeben, daß es sehr überzeugend wirkt. Man kann damit:

  1. C-Funktionen direkt von Caml aus aufrufen. (O.K., das ist wohl das Minimum, das ein ernstzunehmender Fremdaufrufsmechanismus bieten muß. Andererseits gibt es auch welche, die nicht einmal das unterstützen.) Die Deklarationen sehen denen von CFFI dem Grunde nach sehr ähnlich.

  2. Caml-Funktionen von C aus aufrufen. Man muß dafür durch eine spezielle C-Trampolinfunktion hüpfen. Argumente und Rückgabewerte werden nicht automatisch zwischen C- und Caml-Typen umgewandelt.

  3. Von C aus Caml-Datentypen dekonstruieren.

  4. Caml-Programme in C-Programme einbetten.

Punkt 4 ist derjenige, in dem O'Caml allen freien Lispcompilern außer ECL voraus ist. (Ich zähle Toilet Lisp mal noch nicht. ;)) Er ist außerdem derjenige, der es mir erlauben würde, O'Caml statt C++ für den Toilet-Lisp-Compiler zu verwenden, wenn ich das wollte.

Vielleicht sollte ich das. Caml ist die einzige Sprache neben C und C++, die offizielle LLVM-Bindings hat. Allerdings würde das wahrscheinlich bedeuten, daß ich einiges an der Struktur sowohl des Interpreters als auch des Compilers ändern müßte. Außerdem würde das Kompilieren des Compilers schwieriger werden. Weder Xcode noch GNUstep-Make haben Unterstützung für O'Caml.

Im Moment habe ich nicht viel Zeit fürs Programmieren. Wenn die Prüfungen vorbei sind, werde ich mich dieser Frage ernsthafter widmen können.