Как мне назвать мои модули 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 объясняла это.