Shriram Krishnamurthi wrote at 11/17/2011 09:43 AM:
DSSSL (-:

(Since I believe Bigloo and/or Gambit implemented DSSSL, lurking in
their implementations is code that does this...)

Also, the Curl programming language had units of measurement built-in:
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.131.6818

2.4.1.3 Quantities

Presentation-oriented applications frequently deal with
measurements of space and time. Curl accordingly includes
“quantity types,” which are numeric data types with units, such as
Distance and Time. These types are distinct from the
conventional dimensionless numeric types such as float and
double. There are also quantity literals, such as 2.54cm,
72pt, 50ms, 1week, and even 800dpi and 32(ft/(s^2)).
By using quantities, programmers can let Curl handle conversions
between units and can write more descriptive (and checkable)
interfaces to graphical APIs. There is also a pixel-denominated
unit px, which can be converted to a Distance by dividing by
the spatial resolution of a display device. Quantity types are not
found in other languages for creating Web content, but they are
used pervasively in the Curl GUI APIs and are tremendously
useful. in application programs.

It seems easy for someone to add to Racket as a library, so long as the library user doesn't mind having to explicitly ``cast'' these objects to normal Racket numbers when they want to interoperate with Racket libraries that only work with numbers. Maybe use Typed Racket or contracts info to add in the type coercions manually, or maybe having to do the explicit casts is actually good programming practice.

I am doing something like this with an (as yet unreleased) time library, and have thought of doing it for financial apps as well.

One thing I haven't decided is whether and how to represent precision (or resolution) information, and what to do with that information. For a simple example, what is the answer to the difference "(2 days) - (3 minutes)"? I'm wondering whether the unit of measure alone can indicate the precision for 99.9% of practical purposes, or we have to be able to support more flexible specification of precision (e.g., "(2 days) - (3 minutes to a precision of 15 seconds)").

--
http://www.neilvandyke.org/
_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/users

Reply via email to