ANN: network-alt 0.3 and hsgnutls 0.2.1

Ashley Yakeley ashley at
Sun Nov 6 19:56:59 EST 2005

In article <20051106102654.GA4531 at yui.aoinet>,
 Einar Karttunen <ekarttun at> wrote:

> On 05.11 18:29, Ashley Yakeley wrote:
> > It's quite low-level, isn't it? I wonder if it would be worth doing 
> > something along these lines:
> > 
> > newtype IPv4Address = IPv4Address Word32
> > newtype IPv6Address = IPv6Address Word128
> This brings the question on whether they would be native or
> big endian -

This should be unambiguous. For instance, in the address, 127 
is the high Word8 of the Word32.

> and the user would still need to use resolver API to get at these.

That could be a function in InternetService:

  type DomainName = String
  data InternetService addr  = MkInternetService {
    dnsLookup :: DomainName -> IO (Maybe addr), -- or similar

> Does it make sense to have the address type in there?
> Most of the time high level applications should not
> care whether the socket is IPv4 or IPv6 (or something
> entirely else). One of my main goals has been to
> make the protocols transparent - changing from IPv4
> to being protocol agnostic should be as easy as possible.

This is a good application for polymorphism on the address type.

> The API you are suggesting would be certainly quite
> easy to implement on top of the current one. If you
> can specify the interface you would like I think
> I can include something like that in the next release...

What you have is close to the C sockets API. It's probably best not to 
mix the high-level and low-level stuff. Probably there should be some 
wider discussion on what the best approach is, especially as there's 
some impetus for reform of the file APIs also.

Ashley Yakeley, Seattle WA

More information about the Libraries mailing list