
"S. Alexander Jacobson"
The Y2K problem --------------- It would be nice if the library was explicit about whether year was 2 or 4 digits. Why not define year like this:
newtype Year = Year Int -- don't export constructor mkYear century centyear = Year (100*century+centyear) mkBigYear millenium cent centyear = ...
Because it's easier to use the actual year number.
The type of hour minute and second should protect the user from 28 o'clock and making appointments for 31:101 PM So we probably want:
data Hour = H0 | H1 | H2 ... H23 data Minute = M0 | M1 | M2 ... M59 data Second = S0 | S1 | S2 ... S59 data AMPM = AM | PM
Again, it's simpler to use actual numbers. These values almost never appear as literals in a program, so they would have to be converted to/from numbers anyway, which is unnecessary and no other language does this.
There are also lots of contexts where you want a time but not a date e.g. an alarm clock....
And there are contexts where you want a weekday and hour/minute but not a month or second (a weekly schedule), contexts where you want month/day but not a year (a holiday with a fixed date) etc. Where to stop? -- __("< Marcin Kowalczyk \__/ qrczak@knm.org.pl ^^ http://qrnik.knm.org.pl/~qrczak/