Patch with new API for get/setsockopt
Matthew Danish
mdanish at andrew.cmu.edu
Sun Sep 9 08:36:57 EDT 2007
On Sat, Sep 08, 2007 at 09:03:45PM -0700, Bryan O'Sullivan wrote:
> I would prefer to see the API changed to associate the type of a value
> with the name of its constructor, like this:
>
> data SocketOption = DontRoute Bool
> | TimeToLive Int64
> | ...
>
> One could still pass values of this type into getSocketOption by filling
> out the arguments to a constructor with any value, including undefined.
> There's already ample precedent for this, in the form of
> Data.Storable's sizeOf.
>
> This presents a safer statically checkable interface, while remaining in
> the bounds of H98.
I thought of this, but didn't go this way because I did not want to
change the existing SocketOption type. There's also some argument
that providing such a type is higher-level than the Network.Socket
library, since everything else is pretty much as unforgiving as C.
The point of this patch was to bring the Haskell API to
getsockopt/setsockopt at least to the level of the C API (which
exploits weak typing).
I would much prefer a nicer interface, of course, but I am not sure
that it should be part of Network.Socket. I was originally planning
to write something with type families, but then realized that this had
to run in Hugs as well.
--
-- Matthew Danish -- user: mrd domain: cmu.edu
-- OpenPGP public key: C24B6010 on keyring.debian.org
More information about the Libraries
mailing list