Lernen / Verwenden von ML. Welches System sollte ich verwenden?

8

Ich möchte ML lernen und verwenden, aber es gibt viele Compiler. Ich brauche:

  • Geschwindigkeit
  • geringer Speicherverbrauch
  • threading
  • veränderbare Arrays und Datensatztypen
  • Fortsetzungen
  • bereit für Produktionscode
  • easy ffi
  • aktuell
  • ... hilfreiche Bibliotheken
  • zu einem gewissen Grad tragbar

Ich brauche nicht:

  • Objekte
  • GUI
  • Unterstützung für Windows

Zum Beispiel habe ich OCaml , OCaml gefunden Batterien enthalten und MLton . Irgendwelche Tipps für mich welche soll ich wählen?

    
knivil 04.03.2011, 07:58
quelle

3 Antworten

5

Nun für MLton:

  • Geschwindigkeit
    • Die ganzen Programmoptimierungen geben Ihnen zwar eine bessere Geschwindigkeit als OCaml, aber die Strafe, die Sie für jede Neukompilierung haben, kann ziemlich ärgerlich sein. Siehe diesen Link für einen einfachen informellen Vergleich von MLton und OCaml
  • Threading
  • Veränderbare Arrays und Datensatztypen
  • Fortsetzungen
  • Bereit für den Produktionscode
    • Das hängt natürlich von den verwendeten Bibliotheken ab. Aber die Basisbibliothek ist solide, MLton hat jedoch seine eigenen Ergänzungen und einige andere haben Repos mit Erweiterungen aufgelistet hier . Das MLton-Bibliotheksprojekt enthält jedoch einen netten Code. Wie bei vielen solcher Bibliotheken / Erweiterungen neigen sie jedoch dazu, sich auf andere von ihnen selbst erstellte Erweiterungen zu verlassen, und es ist daher schwierig, nur kleine Teile davon zu verwenden.
  • Einfaches ffi
    • ForeignFunctionInterface und NoLonger-FFI sind großartig. Ich hatte jedoch Geschwindigkeitsprobleme mit dem NL-FFI auf großen C-Codebasen, was meiner Meinung nach darauf zurückzuführen ist, dass MLton die Phantom-Typen nicht vollständig entfernt. Aber das ist nur eine Vermutung, ich könnte etwas falsch gemacht haben.
  • In gewissem Maße tragbar
Jesper.Reenberg 05.03.2011, 14:32
quelle
9

SML unterstützt Fortsetzungen besser. Wenn Sie ein starkes Bedürfnis nach Fortsetzungen haben, ist es eine bessere Wahl; OCaml hat keine Unterstützung in der Sprache für sie, aber es gibt die Delimcc Bibliothek von Oleg für die Begrenzung Fortsetzungen; Da es extern ist, ist es wahrscheinlich langsamer als die Implementierungen von SML. Ansonsten scheint OCaml in diesen Tagen mehr Zugkraft zu haben, also sollten Sie erwarten, dass die Werkzeuge und Bibliotheken etwas besser sind.

Generell ist SML tendenziell etwas eleganter, während OCaml einige erweiterte Funktionen, Macken und Benutzer hat. Leistungsmäßig sind sie beide gut.

(Siehe dies für einen syntaktischen Vergleich der meist verbreiteten Fragmente von beide Sprachen, natürlich sind OCamls Objekte und polymorphe Varianten nicht dargestellt.)

    
gasche 04.03.2011 08:30
quelle
5

Ocaml erfüllt alle Anforderungen aus Ihrer Liste mit Ausnahme von Fortsetzungen. Es ist schnell, speicher-effizient, portabel, hat Posix-Threads-Bindings und gute Bibliotheken für leichte kooperative Threads. Die Standardbibliothek ist ziemlich begrenzt, aber es gibt viele Bibliotheken von Drittanbietern .

Es gibt viele Unternehmen, die OCaml in der Produktion für alle möglichen Dinge einsetzen. Einige der Unternehmen sind auf der Caml-Website aufgeführt.

Ich empfehle auch, einige ausgezeichnete OCaml Erfahrungsberichte zu lesen:

OCaml in der Jane Street Capital

OCaml bei XenSource

    
alavrik 04.03.2011 16:58
quelle

Tags und Links