This one time, at band camp, Benno wrote: >On Mon Sep 25, 2006 at 10:09:45 +1000, Mark Greenaway wrote: >>Although I came to the thread a little late, I was interested to see >>that an issue close to my heart came up, which is operator overloading >>with respect to numeric types. The specific example of date types was >>raised. >> >>As someone who has both programmed professionally for many years and >>just recently begun a science degree majoring in mathematics, I've >>become interested in how to do certain calculations within programming >>languages, and how those programming languages could be improved to make >>writing numeric code less error prone. >> >>At the moment, I spend some of my time calculating unit conversions: >>degrees to radians, electrovolts to joules, angstroms to metres, >>concentration of H+ to ph etc. etc. It's fun the first time, a little >>less so the second time and downright tedious from then on. I'm sure >>similiar problems come up in other fields over and over again. For >>instance, some people working in financial institutions define a >>currency type that includes not only a quantity but also the currency, >>be it francs, dollars, pounds or whatever. >> >>I was wondering if anyone was aware of a standard approach >>developing numeric types that include their units, or other information >>relevant to them. For instance, if you had a weight in grams and another >>weight in kilograms, and you attempted to do arithmetic on them, it >>would make the appropriate unit conversions for you. If you were >>attempting to do a calculation that makes no sense, such as adding >>weight to time, it could signal an error (preferably at compile time). >>Of course, multiplying and dividing by different types of units is fine. >>This sort of unit checking could catch a whole class of errors that are >>often made in routine calculations. >> >>I'm sure I'm not the first person to have thought of this. Has anyone >>seen or used data types that use these sorts of ideas? > >I've come up with something in python do do this along the lines of: > >>>> kg(1) + grams(1000) >2kg >>>> m(100) / seconds(1) >100 ms-1 >>>> > >If anyone cares I'll try and find the code and post it.
There's a leet tool called 'units' (in 'units' package in Debian) that does all sorts of units calculations. I recommend haz0-ring it into a library, making *-bindings for it, and using it in your code. _______________________________________________ coders mailing list [email protected] http://lists.slug.org.au/listinfo/coders
