Re: [Scheme-reports] [r6rs-discuss] Date and time arithmetic library proposal for R7RS large Scheme John Cowan 29 Nov 2010 02:59 UTC

Thomas Bushnell, BSG scripsit:

> So what I heard was that you wanted to represent an instant of time as
> an integer, with some determinate resolution, and then the predictable
> fight about whether the integer should be denominated in milliseconds,
> microseconds, or nanoseconds.

Not at all.  My proposal allows instants to be either exact or inexact
rationals.  The question is, if you add 1 to a instant, do you get an
instant one second later (modulo leap seconds), or 1 ms later, or what?
This is neither accuracy, precision, nor resolution, but a fourth notion
which I will call scaling.  When instants are integers, scaling and
resolution are the same thing, but not so when instants are allowed to
be non-integers.

I originally proposed that the scaling be 1 ms; that is, that adding 1
to an instant gets you an instant 1 ms later.  However, it seems that
enough people find that confusing that I've now switched to a scaling
of 1 s; that is, adding 1 to an instant gets you an instant representing
the next second.

Marc Feeley's arguments persuaded me to require inexact rationals as
the representation of instants.  However, in practice these are 64-bit
floats, which means since the resolution varies with the distance of
the instant from the epoch, we currently (41 years after the epoch) can
get approximately 10^-5 resolution at best if an instant is a 64-bit
float, and it will get worse as time goes on.  So I have removed the
recommendation to use inexact numbers.

> An instant should be a *number *without any mandated statement of just
> what kind of number it is. And, as I said, an interface that answers
> questions like "what time is it now" has an accuracy as well, which
> should be returned (and which is *not* the same thing as the precision
> of some determinate resolution). There is no worry about precision at
> all if you just return a number, and an accuracy value.

Most clocks don't know their accuracy at all, never mind knowing their
accuracy accurately.

> Posix decided that leap seconds were impossible, and now we have
> the confusing rule that the epoch changes every time a leap second is
> issued. Ah, well, but at this point we're stuck with that bad decision,
> and it would be best if Scheme conformed to it.

+1

> The separate question of what broken-out times
> should look like is one which I think we should handle by simply aping the
> Posix rules, which is pretty much what the proposal on the table looks like.

It's a mixture of Posix and ISO 8601.

--
Man has no body distinct from his soul,              John Cowan
for that called body is a portion of the soul        cowan@ccil.org
discerned by the five senses,                        http://www.ccil.org/~cowan
the chief inlets of the soul in this age.  --William Blake

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports