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/maps.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/maps.scala')
-rw-r--r-- | docs/examples/maps.scala | 109 |
1 files changed, 54 insertions, 55 deletions
diff --git a/docs/examples/maps.scala b/docs/examples/maps.scala index 87489d496d..8b5158005b 100644 --- a/docs/examples/maps.scala +++ b/docs/examples/maps.scala @@ -1,28 +1,27 @@ -package examples; +package examples object maps { - import scala.collection.immutable._; + import scala.collection.immutable._ trait MapStruct[kt, vt] { - trait Map with Function1[kt, vt] { - def extend(key: kt, value: vt): Map; - def remove(key: kt): Map; - def domain: Stream[kt]; - def range: Stream[vt]; + trait Map extends Function1[kt, vt] { + def extend(key: kt, value: vt): Map + def remove(key: kt): Map + def domain: Stream[kt] + def range: Stream[vt] } - type map <: Map; - val empty: map; + type map <: Map + val empty: map } class AlgBinTree[kt <: Ordered[kt], vt <: AnyRef]() extends MapStruct[kt, vt] { - type map = AlgMap; + type map = AlgMap - val empty: AlgMap = Empty(); + val empty: AlgMap = Empty() - private case class - Empty(), - Node(key: kt, value: vt, l: map, r: map) extends AlgMap {} + private case class Empty() extends AlgMap {} + private case class Node(key: kt, value: vt, l: map, r: map) extends AlgMap {} trait AlgMap extends Map { def apply(key: kt): vt = this match { @@ -49,7 +48,7 @@ object maps { else if (l == empty) r else if (r == empty) l else { - val midKey = r.domain.head; + val midKey = r.domain.head Node(midKey, r.apply(midKey), l, r.remove(midKey)) } } @@ -67,64 +66,64 @@ object maps { } class OOBinTree[kt <: Ordered[kt], vt <: AnyRef]() extends MapStruct[kt, vt] { - type map = OOMap; + type map = OOMap trait OOMap extends Map { - def apply(key: kt): vt; - def extend(key: kt, value: vt): map; - def remove(key: kt): map; - def domain: Stream[kt]; - def range: Stream[vt]; + def apply(key: kt): vt + def extend(key: kt, value: vt): map + def remove(key: kt): map + def domain: Stream[kt] + def range: Stream[vt] } val empty: OOMap = new OOMap { - def apply(key: kt): vt = null; - def extend(key: kt, value: vt) = new Node(key, value, empty, empty); - def remove(key: kt) = empty; - def domain: Stream[kt] = Stream.empty; - def range: Stream[vt] = Stream.empty; + def apply(key: kt): vt = null + def extend(key: kt, value: vt) = new Node(key, value, empty, empty) + def remove(key: kt) = empty + def domain: Stream[kt] = Stream.empty + def range: Stream[vt] = Stream.empty } private class Node(k: kt, v: vt, l: map, r: map) extends OOMap { def apply(key: kt): vt = - if (key < k) l.apply(key) - else if (key > k) r.apply(key) - else v; + if (key < k) l.apply(key) + else if (key > k) r.apply(key) + else v; def extend(key: kt, value: vt): map = - if (key < k) new Node(k, v, l.extend(key, value), r) - else if (key > k) new Node(k, v, l, r.extend(key, value)) - else new Node(k, value, l, r); + if (key < k) new Node(k, v, l.extend(key, value), r) + else if (key > k) new Node(k, v, l, r.extend(key, value)) + else new Node(k, value, l, r); def remove(key: kt): map = - if (key < k) new Node(k, v, l.remove(key), r) - else if (key > k) new Node(k, v, l, r.remove(key)) - else if (l == empty) r - else if (r == empty) l - else { - val midKey = r.domain.head; - new Node(midKey, r(midKey), l, r.remove(midKey)) - } + if (key < k) new Node(k, v, l.remove(key), r) + else if (key > k) new Node(k, v, l, r.remove(key)) + else if (l == empty) r + else if (r == empty) l + else { + val midKey = r.domain.head; + new Node(midKey, r(midKey), l, r.remove(midKey)) + } def domain: Stream[kt] = l.domain append Stream.cons(k, r.domain); def range: Stream[vt] = l.range append Stream.cons(v, r.range); } } class MutBinTree[kt <: Ordered[kt], vt <: AnyRef]() extends MapStruct[kt, vt] { - type map = MutMap; + type map = MutMap class MutMap(key: kt, value: vt) extends Map { - val k = key; - var v = value; - var l, r = empty; + val k = key + var v = value + var l, r = empty def apply(key: kt): vt = if (this == empty) null else if (key < k) l.apply(key) else if (key > k) r.apply(key) - else v; + else v def extend(key: kt, value: vt): map = if (this == empty) new MutMap(key, value) else { if (key < k) l = l.extend(key, value) else if (key > k) r = r.extend(key, value) - else v = value; + else v = value this } @@ -135,7 +134,7 @@ object maps { else if (l == empty) r else if (r == empty) l else { - var mid = r; + var mid = r while (!(mid.l == empty)) { mid = mid.l } mid.r = r.remove(mid.k); mid.l = l; @@ -144,19 +143,19 @@ object maps { def domain: Stream[kt] = if (this == empty) Stream.empty; - else l.domain append Stream.cons(k, r.domain); + else l.domain append Stream.cons(k, r.domain) def range: Stream[vt] = if (this == empty) Stream.empty; - else l.range append Stream.cons(v, r.range); + else l.range append Stream.cons(v, r.range) } - val empty = new MutMap(null, null); + val empty = new MutMap(null, null) } - class Date(y: Int, m: Int, d: Int) with Ordered[Date] { - def year = y; - def month = m; - def day = d; + class Date(y: Int, m: Int, d: Int) extends Ordered[Date] { + def year = y + def month = m + def day = d def compareTo[b >: Date <% Ordered[b]](that: b): int = that match { case other: Date => @@ -182,7 +181,7 @@ object maps { } def main(args: Array[String]) = { - val t = new OOBinTree[Date, String](); + val t = new OOBinTree[Date, String]() () } |