Using fundamental types to do "simple things simple" fits very well in the most of cases.
by Krzysztof Ostrowski
From the article:
If we assume that our application uses only a subset of values carried by given fundamental type, we are likely to get warning from the compiler. We shall take that warning seriously. How to inform type system about our assumptions? Example solutions follow.