Как мне назвать мои модули Haskell для программы, а не библиотеки, и организовать их в иерархии?
Я делаю лучевой трассировщик под названием Luminosity. Сначала у меня были эти модули:
Vector Colour Intersect Trace Render Parse Export
Каждый модуль был в порядке, но я чувствовал, что это не хватает организации.
Сначала я помещаю каждый модуль под Luminosity
, поэтому, например, Vector
теперь был Luminosity.Vector
(я предполагаю, что это стандартно для программы haskell?).
Тогда я подумал: Vector и Color являются независимыми и могут быть повторно использованы, поэтому они должны быть разделены. Но они слишком малы, чтобы превращаться в библиотеки.
Куда они должны идти? Уже (по взлому) есть Data.Vector
и Data.Colour
, так что я должен положить их туда? Или это вызовет путаницу (даже если я импортирую их вместе с другим моим местным импортом)? Если нет, то оно должно быть Luminosity.Data.Vector
или Data.Luminosity.Vector
? Я почти уверен, что видел оба используемых, хотя, возможно, мне просто пришлось посмотреть проект с использованием нетрадиционной структуры.
У меня также есть простой экспортер изображений TGA (Export
), который может быть независим от Luminosity. Кажется, что правильное местоположение было бы Codec.Image.TGA
, но опять же, должно быть Luminosity
где-то там, и если да, то где?
Было бы неплохо, если бы Структура проекта Haskell или какая-то другая wiki объясняла это.