
On Mon, 2009-01-19 at 20:55 +0000, Andrew Coppin wrote:
Dan Piponi wrote:
On Mon, Jan 19, 2009 at 11:33 AM, Andrew Coppin
wrote: My only problem with it is that it's called Bool, while every other programming language on Earth calls it Boolean. (Or at least, the languages that *have* a name for it...)
Python: bool ocaml: bool C++: bool C99: bool C#: bool
Versus Java, Pascal,
Again, we don't want to imitate these two!
Smalltalk and Eiffel who all call it Boolean. Oh well. At least it's pretty obvious what it means.
But I'm far more perturbed by names like Eq, Ord, Num, Ix (??), and so on. The worst thing about C is the unecessary abbriviations; let's not copy them, eh?
They're short so they're quick to parse (for a human) and read. They're easy to type. If you have a constraint like (Eq a,Num a,Ord a,Show a,Ix a) you can see all five type classes at a single glance without having to scan your eye across the line. They're highly mnemonic in the sense that once I'd learnt what they meant it became hard to forget them again. What exactly is wrong with them?
Would it really hurt to type a few more keystrokes and say "Equal"? "Ordered"? "Index"? I don't think so.
Constantly? Yeah. Commonly used names should be short, or abbreviated. You can't abbreviate type classes.
Sure, we don't especially want to end up with classes like StrictlyOrderedAssociativeSet or something, but a few more characters wouldn't exactly kill you.
But, again, this is too difficult to change now, so we're stuck with it.
PS. Ord implies Eq, so you don't need both in the same constraint. Num implies Show, so you don't need that either. So actually, (Ord a, Num a, Ix a) - or rather, (Ordered a, Number a, Index a) - would do just fine.
newtype MyFoo = MyWrapsWhatever deriving (Eq, Ord, Read, Show, Num, Ix, Data, Typeable) vs. newtype MyFoo = MyWrapsWhatever deriving (Equality, Order, Read, Show, Number, Index, Data, Typeable) Yeah. Count me out. jcc