Hi All

It seems to me to be a free win just to replace:

`class Num a where`

with 

`class Num (a :: (r :: RuntimeRep)) where`

And then one could define `Num` instances for unlifted types.

This would make it possible to avoid using the ugly `+#` etc syntax for operations on unlifted types. 

`Int#` and `Word#` could have `Num` instances defined just as `Int` and `Word` already have.

I presume there's a reason why this hasn't been done, but I was wondering why?

Thanks,
Clinton