How to have strongly typed numerical values?
    bearophile 
    bearophileHUGS at lycos.com
       
    Wed Sep  5 04:50:42 PDT 2012
    
    
  
Don Clugston:
> I'd be interested to know if that idea is ever used in real 
> code. I mean, it's a classic trendy template toy, but does 
> anyone actually use it?
As usual I don't have usage statistics.
I like dynamic languages, like Python. But if you give me a 
static type system, then I want something back from the language. 
Detecting certain bugs at compile-time is one way to pay me back.
If you want most programmers to use a feature like units, it 
needs:
- Built-in, in the standard library, or easy to install;
- To have a compact and very nice looking syntax;
- Easy enough to use;
- Flexible, to be able to represent all units you find in many 
real problems;
- Have zero or near-zero run-time costs, in both CPU and memory;
- Give acceptable error messages.
I think in F# people are using units often enough.
If a units system will be present in Phobos and it will be very 
good to use, maybe D programmers will use them.
I am currently using Haskell a little, and I am enjoying giving 
types to values to tell them apart in terms of their usage.
> I say this because I've done a lot of physics calculation 
> involving multiple complicated units, but never seen a use for 
> this sort of thing.
> In my experience, problems involving units are easily 
> detectable (two test cases will catch them all).
> The most insidious bugs are things like when you have used 
> constants at 25'C instead of 20'C, or when you have a sign 
> wrong.
There are some famous problems caused by mixing units:
http://lamar.colostate.edu/~hillger/unit-mixups.html
Maybe this is the most famous:
http://mars.jpl.nasa.gov/msp98/news/mco990930.html
Bye,
bearophile
    
    
More information about the Digitalmars-d-learn
mailing list