Hi! On Mon, Jun 28, 2004 at 02:08:29PM +0200, Martin Sjögren wrote: > mån 2004-06-28 klockan 14.00 skrev Peter Simons: > > Simon Marlow writes: > > > > > I'm tempted to replace the current setSocketOption with > > > this version. Would anyone object? > > > > On the contrary. IMHO, the SockOption type should be > > extended to contain the required parameter, for example: > > > > data SocketOption > > = Debug Bool > > | ReuseAddr Bool > > | SendBuffer (Maybe Int) -- bytes > > | RecvTimeOut (Maybe Int) -- milliseconds > > | SendTimeOut (Maybe Int) > > | [...] > > > > Then setSocketOption would even add the type-safety which > > the original function call doesn't have, and it would be > > more intuitive to use. > > Wouldn't that make > getSocketOption :: Socket -> SocketOption -> IO Int > a bit strange? How would you propose to change it?
Possible, but also possibly overkill, would be: newtype Debug = Debug Bool newtype SendBuffer = SendBuffer (Maybe Int) [...] class SocketOption a where [...] instance SocketOption Debug [...] instance SocketOption SendBuffer [...] [...] setSocketOption :: SocketOption a => Socket -> a -> IO () getSocketOption :: SockerOption a => Socket -> IO a However, while quite clever :-), this would not be far from having a seperate get/set-functions for every option (and could indeed be implemented that way). Greetings, Carsten -- Carsten Schultz (2:38, 33:47), FB Mathematik, FU Berlin http://carsten.codimi.de/ PGP/GPG key on the pgp.net key servers, fingerprint on my home page.
pgpB9AbEazBPy.pgp
Description: PGP signature
_______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users