Соглашения об именах модулей Haskell

Как мне назвать мои модули Haskell для программы, а не библиотеки , и организовать их в иерархию ?

Я делаю трассировщик лучей под названием Luminosity. Сначала у меня были эти модули:

Vector Colour Intersect Trace Render Parse Export

Каждый модуль был хорош сам по себе, но я чувствовал, что этому не хватает организации.

Сначала я поместил каждый модуль в Luminosity, так что, например, Vectorтеперь Luminosity.Vector(. Я предполагаю, что это стандарт для программы Haskell? ).

Тогда я подумал, что :Вектор и Цвет независимы и могут использоваться повторно, поэтому их следует разделить. Но они слишком малы, чтобы превратить их в библиотеки.

Куда им идти? На hackage уже есть ()a Data.Vectorи Data.Colour, так что мне их туда ставить?Или это вызовет путаницу (, даже если я импортирую их сгруппированными с моими другими локальными импортами )? Если нет, то должно ли это быть Luminosity.Data.Vectorили Data.Luminosity.Vector? Я почти уверен, что видел, как используются оба, хотя, возможно, мне просто довелось посмотреть на проект, использующий нетрадиционную структуру.

У меня также есть простой экспортер изображений TGA (Export). который может быть независим от Luminosity. Похоже, правильным местом будет Codec.Image.TGA, но опять же, должно ли Luminosityбыть где-то там, и если да, то где?

Было бы неплохо, если бы Структура проекта Haskell или какая-то другая вики объяснили это.

32
задан mk12 13 April 2016 в 06:49
поделиться