On Wed, Jul 13, 2005 at 06:13:48PM +0200, Alberto Ruiz wrote: > I have changed the function names as suggested. This new style is clearly > better, allowing Vector.add, Matrix.add, Vector.Complex.add, > Matrix.Complex.add, etc. ... > Now we can have Vector.T a and Matrix.T a for any storable a (although > at this point most functions are only defined for Double). For > example:
I would like to bristle mildly against the style of using Vector.T to represent the vector type. The reasons are 1) it is cryptic to those not used to the convention; 2) enshrining one-type-per-module in the naming convention is not IMO justified, and may prove limiting; 3) it doesn't work out well when you import a module that reexports Vector. I would say leave it Vector.Vector. Then the user may import the module unqualified, or qualified with an abbreviation like V, define his own synonym ("type Vector = Vector.Vector"), or just put up with the light annoyance of writing "Vector.Vector". > 1) If I define > > foo :: Vector.T a -> Matrix.T a > > Haddock (version 0.6) shows just this: > > foo :: T a -> T a I think this is evidence that trying to treat the "primary type" as a special case in naming creates more annoyances than it eliminates. Andrew _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe