Just a quick note before going to bed. Phantom typing of sockets seems broken in MLton. Here is a small example that should not pass type checking (but does in MLton): val socket = INetSock.TCP.socket () val () = Socket.listen (socket, 1) val _ = Socket.recvVec (socket, 1) Both SML/NJ and Poly/ML reject this example. -Vesa Karvonen