on master help sign in
Added missing test018a.idr
commit379c0f9bf4509847d5212cfb6e227c2308338fbd authorEdwin Brady <ecb10@st-andrews.ac.uk> dateMon 5 Nov 2012, 11:00 (14 years ago) parent10a1154
1 file changed+35
test/test018/test018a.idr+35
test/test018/test018a.idrnew file+35
@@ -0,0 +1,35 @@
1+module Main
2+
3+import System.Concurrency.Process
4+
5+ping : ProcID String -> ProcID String -> Process String ()
6+ping main proc
7+ = do lift (usleep 1000)
8+ send proc "Hello!"
9+ lift (putStrLn "Sent ping")
10+ msg <- recv
11+ lift (putStrLn ("Reply: " ++ show msg))
12+ send main "Done"
13+
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!")
19+
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
25+ return ()
26+
27+repeatIO : Int -> IO ()
28+repeatIO 0 = return ()
29+repeatIO n = do print n
30+ run mainProc
31+ repeatIO (n - 1)
32+
33+main : IO ()
34+main = repeatIO 100
35+