5 structure MC
= Multicast
7 val print
= TextIO.print
11 val mch
= MC
.mChannel ()
12 fun count i
= (MC
.multicast(mch
, i
)
14 val _
= spawn (fn () =>
15 (print (concat
["makeNatStream: ",
16 tidToString (getTid ()),
23 fun makeFilter (p
, inMCh
) =
25 val inP
= MC
.port inMCh
26 val outMCh
= MC
.mChannel ()
29 val i
= sync (MC
.recvEvt inP
)
32 then MC
.multicast(outMCh
, i
)
43 val primes
= MC
.mChannel ()
46 val p
= MC
.recv (MC
.port mch
)
48 MC
.multicast(primes
, p
)
49 ; head (makeFilter (p
, mch
))
51 val _
= spawn (fn () =>
52 (print (concat
["makePrimes: ",
53 tidToString (getTid ()),
55 ; head (makeNatStream
2)))
60 fun makeNatPrinter mch n
=
64 if i
> n
then RunCML
.shutdown OS
.Process
.success
67 val m
' = Int.toString m
70 else (print (m
' ^
"\n")
76 val _
= spawn (fn () =>
77 (print (concat
["makeNatPrinter: ",
78 tidToString (getTid ()),
89 val mch
= makePrimes ()
90 val _
= makeNatPrinter mch n
94 SOME (Time
.fromMilliseconds
10))