diff options
author | michelou <michelou@epfl.ch> | 2006-02-22 17:54:31 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2006-02-22 17:54:31 +0000 |
commit | 96ae92e4f6f830a9a4e55768c3de0328a2a030ba (patch) | |
tree | 0b84d247c1693bf186787aaa8f0c75d89fea9be3 /docs/examples/pilib/piNat.scala | |
parent | c1e184a3657d970a8fba6e3c7049f20a2e466bf0 (diff) | |
download | scala-96ae92e4f6f830a9a4e55768c3de0328a2a030ba.tar.gz scala-96ae92e4f6f830a9a4e55768c3de0328a2a030ba.tar.bz2 scala-96ae92e4f6f830a9a4e55768c3de0328a2a030ba.zip |
adapted code to Scala 2 syntax in files src/exa...
adapted code to Scala 2 syntax in files src/examples/**/*.scala
Diffstat (limited to 'docs/examples/pilib/piNat.scala')
-rw-r--r-- | docs/examples/pilib/piNat.scala | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/docs/examples/pilib/piNat.scala b/docs/examples/pilib/piNat.scala index 137c0e5e6a..8f0b11e27e 100644 --- a/docs/examples/pilib/piNat.scala +++ b/docs/examples/pilib/piNat.scala @@ -1,40 +1,40 @@ -package examples.pilib; +package examples.pilib -import scala.concurrent.pilib._; +import scala.concurrent.pilib._ //import pilib._; /** Church encoding of naturals in the Pi-calculus */ -object piNat with Application { +object piNat extends Application { /** Locations of Pi-calculus natural */ - class NatChan extends Chan[Triple[Chan[unit], Chan[NatChan], Chan[NatChan]]]; + class NatChan extends Chan[Triple[Chan[unit], Chan[NatChan], Chan[NatChan]]] /** Zero */ def Z(l: NatChan): unit = choice ( l * { case Triple(z, sd, d) => z.write(()) } - ); + ) /** Successor of Double */ def SD(n: NatChan, l: NatChan): unit = choice ( l * { case Triple(z, sd, d) => sd.write(n) } - ); + ) /** Double */ def D(n: NatChan, l: NatChan): unit = choice ( l * { case Triple(z, sd, d) => d.write(n) } - ); + ) /** Make "l" a location representing the natural "n" */ def make(n: int, l: NatChan): unit = if (n == 0) Z(l) else if (n % 2 == 0) { val l1 = new NatChan; spawn < D(l1, l) >; make(n/2, l1) } - else { val l1 = new NatChan; spawn < SD(l1, l) >; make(n/2, l1) }; + else { val l1 = new NatChan; spawn < SD(l1, l) >; make(n/2, l1) } /** Consume the natural "m" and put it successor at location "n" */ def Succ(m: NatChan, n: NatChan): unit = { - val z = new Chan[unit]; - val sd = new Chan[NatChan]; - val d = new Chan[NatChan]; + val z = new Chan[unit] + val sd = new Chan[NatChan] + val d = new Chan[NatChan] spawn < m.write(Triple(z, sd, d)) >; choice ( z * { x => make(1, n) }, @@ -45,9 +45,9 @@ object piNat with Application { /** Consume the natural "l" and put two copies at locations "m" and "n" */ def Copy(l: NatChan, m: NatChan, n: NatChan): unit = { - val z = new Chan[unit]; - val sd = new Chan[NatChan]; - val d = new Chan[NatChan]; + val z = new Chan[unit] + val sd = new Chan[NatChan] + val d = new Chan[NatChan] spawn < l.write(Triple(z, sd, d)) >; choice ( z * { x => spawn < Z(m) >; Z(n) }, @@ -62,9 +62,9 @@ object piNat with Application { /** Consume the natural at location "n" and return its value */ def value(n: NatChan): int = { - val z = new Chan[unit]; - val sd = new Chan[NatChan]; - val d = new Chan[NatChan]; + val z = new Chan[unit] + val sd = new Chan[NatChan] + val d = new Chan[NatChan] spawn < n.write(Triple(z, sd, d)) >; choice ( z * { x => 0 }, @@ -74,19 +74,17 @@ object piNat with Application { } // Test - val i = 42; - val l = new NatChan; - val l1 = new NatChan; - val l2 = new NatChan; - val l3 = new NatChan; + val i = 42 + val l = new NatChan + val l1 = new NatChan + val l2 = new NatChan + val l3 = new NatChan spawn < make(i, l) | Copy(l, l1, l2) | Succ(l2, l3) | System.out.println("" + i + " = " + value(l1)) | - System.out.println("succ " + i + " = " + value(l3)) - >; + System.out.println("succ " + i + " = " + value(l3)) > } - |