
Ian Lynagh wrote:
On Tue, Aug 28, 2012 at 08:58:15PM +0100, Roman Leshchinskiy wrote:
On 28/08/2012, at 10:26, Simon Peyton-Jones wrote:
Geoff, Simon M, and I have just realised that · vector (which we would like to be included in HP) depends on primitive · And primitive is a Terrible Name for a package. Really unacceptably bad.
Hmm, I'm not sure I agree :-)
Could you please explain why it's so terrible?
I can't speak for Simon, but I've always thought it overly-generic.
Given the description starts "This package provides wrappers for primitive array operations from GHC.Prim."
Yes, this description is quite outdated. Thanks for bringing it to my attention!
and that it was (AIUI) created as a base upon which to build 'vector',
I'm really not sure where this impression comes from. Vector isn't even mentioned in either the docs or the name :-)
I would suggest that one of array-primitive primitive-array vector-primitive primitive-vector would be a better name. I don't know enough about it to know whether 'array' or 'primitive' would be better, and I don't know if there is precedent for whether 'primitive' should come first or last.
None of these describe what the package does since it contains a lot more than just array primitives.
I'm not really sure why it is worse than, say, binary. Or vector, for that matter.
Hopefully, binary and vector are the obvious, natural APIs for their tasks.
Well, binary's name is quite general and only vaguely related to its task. Don't get me wrong, I think it's a perfectly fine name, I just don't see how primitive is any worse.
If it is to be renamed, though, then I would really find it useful to have agreed upon guidelines on what constitutes a Terrible Name so that I can try to avoid picking one in the future.
It would very much have to be a guideline as opposed to a rule, but I'd suggest something like:
A package should not use a descriptive name that another package might be equally- or more-deserving-of.
To me, this reads as "packages should not use descriptive names" since there is almost always another package that does roughly the same thing. In the specific case of primitive, though, I'm actually having trouble finding another package on Hackage which would want to use the name. Roman