# A sample revised prelude for numeric classes

**Bjorn Lisper
**
lisper@it.kth.se

*Mon, 12 Feb 2001 10:08:02 +0100 (MET)*

Tom Pledger:
>*Brian Boutel writes:
*>* :
*>* | Having Units as types, with the idea of preventing adding Apples to
*>* | Oranges, or Dollars to Roubles, is a venerable idea, but is not in
*>* | widespread use in actual programming languages. Why not?
*
>*There was a pointer to some good papers on this in a previous
*>*discussion of units and dimensions:
*
>* http://www.mail-archive.com/haskell@haskell.org/msg04490.html
*
>*The main complication is that the type system needs to deal with
*>*integer exponents of dimensions, if it's to do the job well.
*
Andrew Kennedy has basically solved this for higher order languages with HM
type inference. He made an extension of the ML type system with dimensional
analysis a couple of years back. Sorry I don't have the references at hand
but he had a paper in ESOP I think.
I think the real place for dimension and unit inference is in modelling
languages, where you can specify physical systems through differential
equations and simulate them numerically. Such languages are being
increasingly used in the "real world" now.
It would be quite interesting to have a version of Haskell that would allow
the specification of differential equations, so one could make use of all
the good features of Haskell for this. This would allow the unified
specification of systems that consist both of physical and computational
components. This niche is now being filled by a mix of special-purpose
modeling languages like Modelica and Matlab/Simulink for the physical part,
and SDL and UML for control parts. The result is likely to be a mess, in
particular when these specifications are to be combined into full system
descriptions.
Björn Lisper