Here's my test program. TCP is a valid protocol. But I get the following when I run it. I'm running under W98 by the way. I have two questions: 1) Why do I get an error? 2) Even if this is a valid error why doesn't the function tell me so that I can handle it rather than terminating? Dominic. C:\Dom\haskell\ping>main Fail: does not exist Action: getProtocolByName Reason: no such protocol entry C:\Dom\haskell\ping>version C:\Dom\haskell\ping>"c:\program files\glasgow haskell compiler\ghc-5.02\bin\ghc" --version The Glorious Glasgow Haskell Compilation System, version 5.02 module Main(main) where import BSD main = do protocolEntry <- getProtocolByName "TCP" {- The documentation gives no clue as to what constitutes an error condition. Looking at the C equivalent in http://www.opengroup.org/onlinepubs/7908799/xns/endprotoent.html, this gives a null pointer to the data structure. Assume for now that the Haskell equivalent returns a null protocol name. -} if protoName protocolEntry == "" then putStrLn "Error" else putStrLn ("Protocol name: " ++ (protoName protocolEntry))