@@ -0,0 +1,35 @@
3+import System.Concurrency.Process
5+ping : ProcID String -> ProcID String -> Process String ()
7+ = do lift (usleep 1000)
9+ lift (putStrLn "Sent ping")
11+ lift (putStrLn ("Reply: " ++ show msg))
14+pong : Process String ()
15+pong = do -- lift (putStrLn "Waiting for message")
16+ (sender, msg) <- recvWithSender
17+ lift $ putStrLn ("Received " ++ msg)
18+ send sender ("Hello back!")
20+mainProc : Process String ()
21+mainProc = do mainID <- myID
22+ pongth <- create pong
23+ pingth <- create (ping mainID pongth)
24+ recv -- block until everything done
27+repeatIO : Int -> IO ()
28+repeatIO 0 = return ()
29+repeatIO n = do print n