我应该如何为程序命名我的Haskell模块而不是库和将它们组织在一个层次结构中?Haskell模块命名约定
我正在制作一个名为Luminosity的光线追踪器。首先,我有这些模块:
Vector Colour Intersect Trace Render Parse Export
每个模块都很好,但我觉得这是缺乏组织。
首先,我把每个模块放在Luminosity
之下,所以例如Vector
现在是Luminosity.Vector
(我认为这是haskell程序的标准?)。
然后我想:Vector和Color是独立的,可以重用,所以它们应该分开。但是它们太小而无法变成图书馆。
他们应该到哪里呢?已经(在hackage上)Data.Vector
和Data.Colour
,所以我应该把它们放在那里?或者这会引起混淆(即使我将它们与其他本地进口分组在一起)?如果不在那里,应该是Luminosity.Data.Vector
还是Data.Luminosity.Vector
?我很确定我已经看到了两个使用过,虽然也许我碰巧看到一个使用非传统结构的项目。
我也有一个简单的TGA图像输出器(Export
),它可以独立于Luminosity。看起来正确的位置是Codec.Image.TGA
,但是再次,Luminosity
应该在那里,如果是的话,在哪里?
这将是很好,如果Structure of a Haskell project或其他维基解释这一点。
如果您想制作可重复使用的代码,请将其打包到库中。大小并不重要。 – 2012-07-21 19:06:24
Vis可重用模块用于几何图元 - 代数类型,矢量和颜色非常容易定义,因此对于认真使用Haskeller而言,希望自己定义它们而不是依赖另一个库。然后他们控制他们的表示,不必担心依赖性问题(API变更,作者将要失踪等) – 2012-07-22 06:11:33