I think I too like *| more than ~>, it emphasizes that it's a multiplication, and ~> would probably collide with other libraries more. Do you think we should maybe also replace .*., ./. etc. with |*|, |/|? We could make a convention to use a | on the side of unit-bearing values, and introduce stuff like |*, |/ for easily working with dimensionless values.
I also agree with your change regarding #2. However, for the situation in that example, I would recommend simply adding a new unit SolarMass, with an instance instance Convertible MassDimension SolarMass. Otherwise, coercions, for example, will still not work:
Hello Thijs, and thank you for handling this (rather dirty) patch!
I also think (|*), (|/) are nice conventions. And I agree that it is better idea to create SolarMass as a unit, when we need coersion. Coersions are a convenient thing that dimensional package didn't have!