Good idea. Andrew Kennedy wrote a whole thesis about this, and a
paper or two besides.
http://research.microsoft.com/~akenn/
> -----Original Message-----
> From: Tom Pledger
> Sent: Thursday, August 26, 1999 7:56 AM
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: Units of measure
>
>
> Hi. Here's a short question which has been bothering me, and a longer
> discussion of why. Apologies if it's a rote.
>
> Where do units of measure fit into a type system?
>
> Expressions along these lines should ideally be legal:
>
> (x :: Metres) / (y :: Seconds)
>
> (x :: Pounds_sterling_per_kilowatt_hour) * (y :: kilowatt_hours)
>
> ...and there's something to be said for supporting the addition of a
> number of feet to a number of metres,
>
> ...but this should ideally be rejected by the compiler:
>
> (x :: Metres) + (y :: Seconds)
>
> It's tempting to use the type system, but then it runs into these two
> problems (at least):
> - There are infinitely many derivable units of measure. At what
> point do you stop defining them singly and statically?
> - There's a slew of (*) and (/) overloadings, none of which are fit
> to be written by hand.
>
> If a set of units is declared elsewhere than in your program, what
> happens when another currency becomes of concern?
>
> Could every numeric expression be accompanied by a set - inferred
> where possible - of (unit, nonzero exponent) pairs? For example,
> could a force expression have {(kg, 1), (m, 1), (s, -2)} as part of
> its type?
>
> Regards,
> Tom
>