úÎ:Ä9)     NonePreferred host to bind. An explicit host name. Any available IPv6 host. Any available IPv4 host. Any available host.  Extract the  from a  preference, or  otherwise. -The following special values are recognized:  * means    *4 means   *6 means   Any other string is     None 0Connect to a TCP server and use the connection. DThe connection socket is closed when done or in case of exceptions. AIf you prefer to acquire and close the socket yourself, then use   and . FStart a TCP server that accepts incoming connections and handles them $ concurrently in different threads. NAny acquired network resources are properly closed and discarded when done or  in case of exceptions. Note: This function performs   and  , so you don' t need to  perform those manually. (Bind a TCP listening socket and use it. CThe listening socket is closed when done or in case of exceptions. AIf you prefer to acquire and close the socket yourself, then use ,   and the  function from Network.Socket instead. Note: / is tipically 128, which is too small for high 5 performance servers. So, we use the maximum between  and 6 2048 as the default size of the listening queue. The  and   options are set on the socket. 0Accept a single incoming connection and use it. DThe connection socket is closed when done or in case of exceptions. FAccept a single incoming connection and use it in a different thread. DThe connection socket is closed when done or in case of exceptions.  Obtain a 3 connected to the given host and TCP service port.  The obtained ! should be closed manually using  when  it'Is not needed anymore, otherwise you risk having the socket open for much  longer than needed. Prefer to use  2 if you will be using the socket within a limited M scope and would like it to be closed immediately after its usage or in case  of exceptions.  Obtain a 4 bound to the given host name and TCP service port.  The obtained ! should be closed manually using  when  it's not needed anymore. Prefer to use  6 if you will be listening on this socket and using it N within a limited scope, and would like it to be closed immediately after its ! usage or in case of exceptions.  Close the . 4Read up to a limited number of bytes from a socket. Returns = if the remote end closed the connection or end-of-input was O reached. The number of returned bytes might be less than the specified limit. &Writes the given bytes to the socket. KMove the elements that match the predicate closer to the head of the list.  Sorting is stable. $ was introduced in base==4.6.0.0. We'll use M our own version here for a while, until base==4.6.0.0 is widely establised.  Server hostname. Server service port. ,Computation taking the communication socket  and the server address. Preferred host to bind. Service port to bind. )Computation to run in a different thread 4 once an incoming connection is accepted. Takes the + connection socket and remote end address. Preferred host to bind. Service port to bind. ,Computation taking the listening socket and  the address it' s bound to. Listening and bound socket. $Computation to run once an incoming 5 connection is accepted. Takes the connection socket  and remote end address. Listening and bound socket. )Computation to run in a different thread 4 once an incoming connection is accepted. Takes the + connection socket and remote end address.           !"#$%&'()*network-simple-0.3.0Network.Simple.TCPNetwork.Simple.InternalNmaxListenQueueControl.Concurrent forkFinallynetwork-2.4.1.2Network.SocketHostName ServiceNameNetwork.Socket.Internal withSocketsDoNetwork.Socket.TypesSocketSockAddrHostPreferenceHostHostIPv6HostIPv4HostAnyconnectservelistenaccept acceptFork connectSockbindSock closeSockrecvsend hpHostNamebase Data.MaybeNothing$fIsStringHostPreferenceNoDelay ReuseAddr prioritize newSocket isIPv4addr isIPv6addr