Wie sollte ich meine Haskell Module für ein Programm, keine Bibliothek, und benennen sie in einer Hierarchie ordnen?Haskell Modul Namenskonventionen
Ich mache einen Ray Tracer namens Luminosity. Zuerst hatte ich diese Module:
Jedes Modul war in Ordnung für sich, aber ich fühlte mich wie diese Organisation fehlte.
Zuerst legte ich jedes Modul unter Luminosity
, also zum Beispiel Vector
war jetzt Luminosity.Vector
(ich nehme an, das ist Standard für ein Haskell-Programm?).
Dann dachte ich: Vektor und Farbe sind unabhängig und könnten wiederverwendet werden, also sollten sie getrennt werden. Aber sie sind viel zu klein, um Bibliotheken zu werden.
Wohin sollten sie gehen? Es gibt bereits (auf Hack) eine Data.Vector
und Data.Colour
, also sollte ich sie dort hinstellen? Oder wird das Verwirrung stiften (auch wenn ich sie mit meinen anderen lokalen Importen gruppiere)? Wenn nicht, sollte es Luminosity.Data.Vector
oder Data.Luminosity.Vector
sein? Ich bin mir ziemlich sicher, dass ich beides gesehen habe, obwohl ich vielleicht zufällig ein Projekt mit einer unkonventionellen Struktur betrachtete.
Ich habe auch eine einfache TGA Bild Exporteur (Export
), die unabhängig von Luminosity sein kann. Es scheint der richtige Ort wäre Codec.Image.TGA
, aber wieder sollte Luminosity
irgendwo drin sein und wenn ja, wo?
Es wäre schön, wenn Structure of a Haskell project oder ein anderes Wiki dies erklärt.
Wenn Sie wiederverwendbares Stück Code machen möchten, verpacken Sie es in einer Bibliothek. Die Größe spielt keine Rolle. –
Vis wiederverwendbare Module für geometrische Grundformen - mit algebraischen Typen sind Vektoren und Farben so einfach zu definieren, dass ein Haskeller für ernsthafte Zwecke seine eigenen definieren möchte, anstatt sich auf eine andere Bibliothek zu verlassen. Sie haben dann die Kontrolle über ihre Repräsentationen und müssen sich nicht um Abhängigkeitsprobleme kümmern (API-Änderungen, Autor wird vermisst usw.) –