[MLton] overflow vs. SysErr on time functions
Jesper Louis Andersen
jlouis@mongers.org
Wed, 7 Jul 2004 20:00:26 +0200
Quoting Stephen Weeks (sweeks@sweeks.com):
> As I alluded to on the Basis Library discussion list, I'm planning to
> change the following functions so that they raise SysErr inval, not
> overflow on time values that are too large.
>
> OS.FileSys.setTime
> OS.IO.poll
> OS.Process.sleep
> Posix.FileSys.utime
> Posix.Process.{alarm,sleep}
> Socket.select
>
> Any objections/support?
Support. While I do not read the BLDL here is the main reason:
; To me, overflow means that a value of a given type became so large
it could not be represented by the type.
; SysErr inval on the other hand means that I passed an illegal value
to a function.
It should be clear they are not linked to each other at all. Simply,
a Posix function could be so, that it does not accept values above
for instance 10^6, while the integer you pass it of course allows
for its size on the architecture you happen to play with. I think
the prime example for this is usleep(3). Here it seems unlogical to
get an overflow exception.
Then why the above functions? Consistency.
--
j.