¿Cómo debo nombre de mi Haskell módulos de un programa, no una biblioteca, y organizarlos en una jerarquía?
Estoy haciendo un trazador de rayos llamado Luminosidad. Primero tenía estos módulos:
Vector Colour Intersect Trace Render Parse Export
Cada módulo fue bien en su propio, pero me pareció que carecía de organización.
Primero de todo lo que he puesto cada módulo bajo Luminosity
, así por ejemplo Vector
ahora era Luminosity.Vector
(asumo que esta es la norma para un programa haskell?).
Entonces pensé, Vector y el Color son bastante independientes y pueden ser reutilizados, por lo que deben ser separados. Pero están en camino a la pequeña a separar en una biblioteca (125 y 42 líneas, respectivamente).
Dónde deben ir? Ya hay (en hackage) Data.Vector
y Data.Colour
, por lo que debo poner allí? O será que causa confusión (aunque yo la importación de los mismos agrupados con otros de mi local de las importaciones)? Si no lo hay, debería ser Luminosity.Data.Vector
o Data.Luminosity.Vector
? Estoy bastante seguro de que he visto, aunque tal vez sólo me ocurrió mirar en un proyecto con un no convencionales de la estructura.
También tengo una simple imagen TGA exportador (Export
) que puede ser independiente de la Luminosidad. Aparece la ubicación correcta sería Codec.Image.TGA
, pero de nuevo, debe Luminosity
estar en alguna parte y si es así donde?
Finalmente he Parse
que contiene JSON
instancias para casi todo. ghc -Wall
llama a estos huérfanos, pero creo que tiene mucho más sentido para mantener a todos juntos, ya que todos ellos son similares y la necesidad de la misma las funciones de comodidad. Text.JSON.Instances
tendría sentido, salvo que este no es independiente, obviamente, y por lo que necesita para tener Luminosity
en alguna parte.
Sería bueno si la Estructura de un Haskell proyecto o alguna otra wiki se explica esto.