
Does it enable you to, say, send raw ICMP packets?
AFAIK, Haskell supports TCP, and nothing else. (A while back I wanted to write an automated pinging program. But the only way I could figure out how to do it is to call the OS "ping" utility and attempt to parse what it writes to stdout. Oh, did I mention that's different on WinNT, WinXP and UNIX?)
Andrew, I thought this was relatively straightforward. Look in http://www.haskell.org/networktools/src for multi-threaded versions. Beware I wrote ping and traceroute about 5 years ago. They're pretty much straight from Stevens' book. On the other hand, I quite liked this: sequenceWhile_ :: Monad m => (a -> Bool) -> [m a] -> m () sequenceWhile_ p [] = return () sequenceWhile_ p (x:xs) = x >>= \c -> if (p c) then sequenceWhile_ p xs else return () I'd forgotten about them and I'm not particularly proud of them. I guess I could put them in hackage so that they are at least a starting point for someone. Dominic.