[m-rev.] for post-commit review: readability improvements to calendar module
Zoltan Somogyi
zoltan.somogyi at runbox.com
Mon Jul 6 17:13:43 AEST 2026
On Mon, 6 Jul 2026 14:43:50 +1000, Julien Fischer <jfischer at opturion.com> wrote:
> -do_fixed_duration_between(DateA, DateB) = Duration :-
> - some [!Borrow] (
> - MicroSecond1 = DateB ^ dt_microsecond,
> - MicroSecond2 = DateA ^ dt_microsecond,
> - subtract_ints_with_borrow(microseconds_per_second,
> - MicroSecond1, MicroSecond2, MicroSeconds, !:Borrow),
> - Second1 = DateB ^ dt_second - !.Borrow,
> - Second2 = DateA ^ dt_second,
> - subtract_ints_with_borrow(60, Second1, Second2, Seconds, !:Borrow),
> - Minute1 = DateB ^ dt_minute - !.Borrow,
> - Minute2 = DateA ^ dt_minute,
> - subtract_ints_with_borrow(60, Minute1, Minute2, Minutes, !:Borrow),
> - Hour1 = DateB ^ dt_hour - !.Borrow,
> - Hour2 = DateA ^ dt_hour,
> - subtract_ints_with_borrow(24, Hour1, Hour2, Hours, !:Borrow),
> - JDN1 = julian_day_number(DateB),
> - JDN2 = julian_day_number(DateA),
> - Days = JDN1 - !.Borrow - JDN2,
> - Duration = init_duration(0, 0, Days, Hours, Minutes, Seconds,
> - MicroSeconds)
> - ).
> +do_fixed_duration_between(Earlier, Later) = Duration :-
> + subtract_ints_with_borrow(microseconds_per_second,
> + Later ^ dt_microsecond, Earlier ^ dt_microsecond,
> + MicroSeconds, BorrowFromSeconds),
> + LaterSecondLessBorrow = Later ^ dt_second - BorrowFromSeconds,
> + subtract_ints_with_borrow(60, LaterSecondLessBorrow,
> + Earlier ^ dt_second, Seconds, BorrowFromMinutes),
> + LaterMinuteLessBorrow = Later ^ dt_minute - BorrowFromMinutes,
> + subtract_ints_with_borrow(60,
> + LaterMinuteLessBorrow, Earlier ^ dt_minute, Minutes, BorrowFromHours),
> + LaterHourLessBorrow = Later ^ dt_hour - BorrowFromHours,
> + subtract_ints_with_borrow(24,
> + LaterHourLessBorrow, Earlier ^ dt_hour, Hours, BorrowFromDays),
> + LaterDay = julian_day_number(Later),
> + EarlierDay = julian_day_number(Earlier),
> + Days = LaterDay - BorrowFromDays - EarlierDay,
> + Duration = init_duration(0, 0, Days, Hours, Minutes, Seconds,
> + MicroSeconds).
I think the diff is good, except for one thing. I would keep the original
code's property that each subtraction is preceded by giving a name
to BOTH inputs to the subtraction.
I have a diff that puts this into effect. Since you are working on the file,
I am attaching it to this email, for you to apply at your convenience.
Zoltan.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DIFF.cal
Type: application/octet-stream
Size: 2000 bytes
Desc: not available
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20260706/974626f1/attachment-0001.obj>
More information about the reviews
mailing list