[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.