¿Cómo debo nombrar mis módulos Haskell para un programa, no una biblioteca, y organizarlos en una jerarquía?Convenciones de nomenclatura del módulo Haskell
Estoy haciendo un rastreador de rayos llamado Luminosity. Primero tuve estos módulos:
Vector Colour Intersect Trace Render Parse Export
Cada módulo estaba bien por sí mismo, pero me parecía que faltaba esta organización.
Primero, puse cada módulo en Luminosity
, entonces por ejemplo Vector
ahora era Luminosity.Vector
(¿asumo que esto es estándar para un programa haskell?).
Luego pensé: Vector y Color son independientes y podrían reutilizarse, por lo que deberían separarse. Pero son demasiado pequeños para convertirse en bibliotecas.
¿Dónde deberían ir? Ya existe (en hackage) un Data.Vector
y Data.Colour
, entonces ¿debería ponerlos allí? ¿O eso causará confusión (incluso si los importo agrupados con mis otras importaciones locales)? Si no está allí, ¿debería ser Luminosity.Data.Vector
o Data.Luminosity.Vector
? Estoy bastante seguro de haber visto ambos usados, aunque tal vez simplemente vi un proyecto usando una estructura no convencional.
También tengo un exportador de imágenes TGA simple (Export
) que puede ser independiente de Luminosity. Parece que la ubicación correcta sería Codec.Image.TGA
, pero una vez más, ¿debería estar Luminosity
en alguna parte y, de ser así, dónde?
Sería bueno si Structure of a Haskell project o algún otro wiki lo explicara.
Si desea hacer una pieza de código reutilizable, empaquételo en una biblioteca. El tamaño no importa. –
Vis módulos reutilizables para primitivas geométricas: con tipos algebraicos, vectores y colores son tan fáciles de definir que para un uso serio, un Haskeller querría definir el suyo propio en lugar de depender de otra biblioteca. Entonces tienen el control de sus representaciones y no tienen que preocuparse por los problemas de dependencia (cambios de API, fallas del autor, etc.) –