Der Großteil des Haskell-Codes, den ich sehe, verwendet direkte Strukturen wie Listen und Bäume. Zum Beispiel ist es üblich, dass ein Haskeller zu schreiben:Was entspricht OCamls Modulen in Haskell?
fillRect :: Color → Bounds → Image → Image
Dieses Muster hat ein Problem: wenn später auf dem Programmierer die Definition von „Bild“ zu ändern, beschließt oder eine andere Datenstruktur verwendet, dann wird er have to Refactor jedes einzelne Stück Code mit ihm. In OCaml können Sie einfach ein Modul verwenden, das eine Schnittstelle zu einem Image angibt, und sich später für bestimmte Implementierungen entscheiden.
Was ist die Haskell-Alternative zu den OCaml-Modulen?
Wie bedeutet diese Art Unterschrift, dass 'fillRect' Implementierungsdetails des Typs' Image' verwendet (oder sogar Zugriff darauf hat)? Wie würden Sie diese Signatur in OCaml anders schreiben (abgesehen von den offensichtlichen syntaktischen Unterschieden und den unterschiedlichen Namenskonventionen)? – sepp2k
[Dies ist das Haskell-Analog] (http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-typeclass/) von dem, was Sie beschreiben. Es ist nicht so leistungsfähig wie Ocaml-Module (zumindest nicht ohne viele Erweiterungen), aber es deckt die häufigsten Anwendungsfälle ab. Machen Sie die Aufzeichnung von Funktionen polymorph über den Typ, der diese Operationen unterstützt. –
Rucksack ist ein Versuch, irgendeine Form von Modul in Haskell zu bekommen - http://plv.mpi-sws.org/backpack/ – nlucaroni