Physical units/Dimensionalized numbers

From HaskellWiki

I have created a simple toy example using fundeps and phantom types to do compile-time unit analysis error
catching at the type level. It currently has only two "base dimensions" time, and length, and very few
convenience functions, but it is usable.

One annoying thing is that while the unitless type can be made an instance of Num, the others can't be made instances of things that support only (+) or (-). That should really be a seperate class, as in the Basic Algebra Proposal.