Section 2.2 of the time conversion example

.ENTRY days-hours-minutes-seconds
.TITLE Dealing with days, hours, minutes, and seconds
Now we have reduced the problem to finding the normalized months,
days, hours, minutes and seconds from a rest second counter <em>r</em>
that is less than the number of seconds in a year. It would be natural
to find the month next, but doing so would call for yet another
<em>counting</em> process, because a month is an irregular time
interval (some months have 31 days, others 30, February has normally
28 days, but there is 29 days in leap years).<p>

It is easy to find the unnormalized number of days, and the normalized
hours, minutes, and seconds from <em>r</em>. This is done by quotient
and modulo <em>calculations</em>. The function
{*how-many-days-hours-minutes-seconds} does that. We first find the
(non day-normalized) number of days by dividing r by
{seconds-in-a-day} (@a). The remainder, called {-n-rest-1} (@b) is
used to find the hour-normalized number of hours by division of
{-n-rest-1} by {seconds-in-an-hour} (@c).  Again the remainder,
{-n-rest-2} (@d) is found, and this quantum is used to find the
minute-normalized number of minutes (@e). Finally the number of
seconds are found in the last modulo calculation (@f).

We use a sequential name-biding form {-let}* to find the results in a
sequential fashion. Still we are entirely within the functional
paradigm, of course. The function returns the list of days, hours,
minutes, and seconds.


Generated: 21. Maj 2000, 15:06:48