summaryrefslogtreecommitdiff
path: root/docs/examples/maps.scala
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2006-02-22 17:54:31 +0000
committermichelou <michelou@epfl.ch>2006-02-22 17:54:31 +0000
commit96ae92e4f6f830a9a4e55768c3de0328a2a030ba (patch)
tree0b84d247c1693bf186787aaa8f0c75d89fea9be3 /docs/examples/maps.scala
parentc1e184a3657d970a8fba6e3c7049f20a2e466bf0 (diff)
downloadscala-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.scala109
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]()
()
}