úÎ2Ú1´      Safe-Infered A timeout of  tells  select(2) to never time out, while   s us sets the timeout parameters to s seconds and us  microseconds.  Safe-Infered# readFds writeFds exceptFds timeout calls the   select(2)' function with the file descriptors in readFds as the 7 FD set to watch for read readiness, and similarly for writeFds  and  exceptFds, with timeout$ specifying the timeout. The return  value is that of the call.  Safe-Infered action returns a  immediately. The result of  action will be placed in said  . If the  is full  when action6 completes, the return value is lost (the action does  not wait for an empty ).  Safe-Infered action stm runs the IO action action and attempts  the STM operation stm&, returning the return value which is  available first. If action returns first, then stm is not  run. If stm returns first, action may or may not complete, but  its return value is discarded.   is a special case  of this function, where stm is simply  applied to the  given .  A version of * that prefers the STM operation to the IO  action. This version of  takes an  additional , and returns its content or the result of the A IO action, depending on which is available first. Note that the  action is not interrupted if the  is the winner, so you  may want to make sure it doesn't stick around forever.   action tm =  action ( tm). ,The function was originally made to support  , the reason this  library exists.      Safe-Infered This version of # immediately returns and makes the  return value of the  select(2) call available as a   . See  for argument information. #The parameters are the same as for  , except for the  addition of a -. The function returns as soon as either the   select(2) has completed, or the  is full. /The return value is either the return value of  select(2) , or the  content of the  . If the  becomes available first,  then the  select(2)0 call may hang around forever or until it times  out (as specified by the  parameter). If the  select(2)  returns before the  is available, the  is guaranteed  to be left in place.  See also  and   . Note that   1 and the former are special cases of the latter. (Incidentally,   is the task I really wanted to C accomplish, and solving it just turned into this little library).  Analogous to  , except with a general STM  action in place of taking a .  A version of  # that prefers the STM operation to    when both are available. Special case of  # where the STM action is reading a  .      Safe-Infered action returns an  immediately. The result of  action will be placed in said  . If the  is full when  action: completes, the return value is lost (the action does not  wait for an empty ).  Safe-InferedThis version of # immediately returns and makes the  return value of the  select(2) call available as an   . See  for argument information.       ! select-0.2.1System.Posix.IO.Select.TypesSystem.Posix.IO.SelectControl.Concurrent.STM.TMVarIO Control.Concurrent.STM.RunOrElseSystem.Posix.IO.Select.STMControl.Concurrent.MVarIOSystem.Posix.IO.Select.MVarselectOrTakeTMVarTimeoutTimeNever MicrosecondsSecondsselectrun runOrElse runOrElse'runOrTakeTMVar selectOrElse selectOrElse'selectOrReadTChanstm-2.4Control.Concurrent.STM.TMVarTMVar takeTMVarbaseForeign.C.TypesCIntControl.Concurrent.STM.TChanTChanGHC.MVarMVar