On 11 Feb 2003, at 18:23, George Russell wrote: > Add 1 month to 1st February 2003. This produces 1st March 2003. (with no > overflow.)
Here, you add 28 days, which is the number of days in (this) February. Fair enough. > Add 1 month to 31st January 2003. Then we get 31st February 2003. This clearly > requires an overflow; we note that February 2003 has 28 days, and so roll over > to 3rd March 2003. Here, you add 31 days, which is the number of days in January. Also fair enough. > Note that in this case "Add 1 month" is not a monotonic operation. > > Add 1 minute to 23:59:60 31st December 2003. I assume that this is a valid time > and that it will be a leap second; if not choose some other year. > > This is complicated since we have multiple overflows. First stage you get the > invalid time > > 23:60:60 31st December 2003. But **HERE**, you add 60 seconds. Why? If you want to add "1 minute" to 23:59:60 31st December 2003, and assuming still that it is a leap minute, then to be consistent with the rule for months, I think you ought to add **61** seconds---the number of seconds in *this* minute. If the problem had been to add "60 seconds", I would agree, but if the problem is to add "1 minute", I think there's a flaw here. /| . . . (_|/ o n a t h a n /| (_/ _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell