Oh, come on.  It's not that bad.  Just start every module with
  import Prelude()
  import MyPrelude
that's what I do. There's nothing sacred about the Prelude (except a few things used for special syntax). It just happens to be in scope.

        -- Lennart

On Dec 8, 2006, at 15:04 , Dan Weston wrote:

The following observations are not new, insightful, or gracious, but I was lusting after the innocent +,-,* operators for my own evil ends and was mildly curious why...

Num is such a fat and greedy class. If you want to marry Cinderella, you have to take her ugly stepsisters too.

1) Groups may only want to define addition. Why can't they use + (instead of <+>, >++++?&**+>, or other such perversion)?

2) Affine spaces have a (-) but no (+). Worse, the signature might be
(-) :: Point -> Point -> Vector, which doesn't unify with (a -> a - > a).

Wouldn't the following be more useful/general?

class Subtraction a b | a -> b where
 (-) :: a -> a -> b

Or would this require needless type annotation for the common subset of (a -> a -> a) instances?

3) Quaternions have no signum, unit quaternions have (*), (/) but no (+) or (-), abs would have a different signatures (Quaternion - > Double) which doesn't unify with (a -> a), and fields cannot be scaled with (*) as in (*) :: (Field f) => Double -> f -> f

Would it not make sense to put each of these operators (division too) into their own individual superclasses that Num inherits? My (obviously naive) philosophy about type classes is that operations should be bundled only when they are mutually recursive (i.e. there is more than one useful minimal definition). If there is just one minimal set of operations, they can be in their own parent class too.

Then again, I should get over my lust and stick with my own operators <+++++++++>, <---------------------->, and <*******>. Not too pretty, but they have a wonderful personality all their own!

Dan

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to