import Monad import System import Control.Concurrent.HPL data ServerMsg = Ping (Port ClientMsg) deriving (Show, Read) data ClientMsg = Pong String deriving (Show, Read) main :: IO () main = do p <- newPort undefined "ping-pong" <<-> p reqs <- listenToPort p let pingServer [] = return () pingServer (Ping clientPort:reqs) = do name <- getEnv "HOST" clientPort <-- Pong name pingServer reqs pingServer reqs