Skip to content

Clarification on Time.from* functions' behavior #35

Description

@Skyb0rg007

The documentation for Time.fromSeconds, Time.fromMilliseconds, Time.fromMicroseconds, and Time.fromNanoseconds is (emphasis mine):

These convert the number n to a time value denoting n seconds (respectively, milliseconds, microseconds, or nanoseconds). If the result is not representable by the time type, then the exception Time is raised.

The wording here makes it seem like an implementation should raise the Time exception when the time is too precise for the implementation, but this does not seem to be implemented in practice.

val t = Time.fromNanoseconds 1
val nsec = Time.toNanoseconds t
val () = TextIO.print ("Nanoseconds: " ^ LargeInt.toString nsec ^ "\n")

(* MLton *)
Nanoseconds: 1
(* SML/NJ *)
Nanoseconds: 0
(* Poly/ML *)
Nanoseconds: 0

Proposal:
Make clear what the expected behaviors of the Time conversion functions are.
This could be done by adding the sentence from the Time.fromReal function:

Depending on the resolution of time, fractions of a microsecond may be lost.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions