aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/2.11/src/adt.scala
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/2.11/src/adt.scala')
-rw-r--r--benchmarks/2.11/src/adt.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/benchmarks/2.11/src/adt.scala b/benchmarks/2.11/src/adt.scala
new file mode 100644
index 0000000..902d2d8
--- /dev/null
+++ b/benchmarks/2.11/src/adt.scala
@@ -0,0 +1,43 @@
+package adt
+
+sealed trait Tree
+case class Leaf(value: String) extends Tree
+case class Branch(left: Tree, right: Tree) extends Tree
+
+sealed trait GTree[+T]
+case class GLeaf[+T](value: String) extends GTree[T]
+case class GBranch[+T](left: GTree[T], right: GTree[T]) extends GTree[T]
+
+sealed trait Entity
+
+case class Company(name: String) extends Entity
+case class Human(name: String, age: Int) extends Entity
+case class Address(line1: String, occupant: Human)
+
+sealed trait Alphabet
+
+case class Greek(άλφα: Letter, βήτα: Letter, γάμα: Letter, δέλτα: Letter, έψιλον: Letter, ζήτα: Letter, ήτα: Letter, θήτα: Letter) extends Alphabet
+case class Cyrillic(б: Letter, в: Letter, г: Letter, д: Letter, ж: Letter, з: Letter) extends Alphabet
+case class Latin(a: Letter, b: Letter, c: Letter, d: Letter, e: Letter, f: Letter, g: Letter, h: Letter, i: Letter, j: Letter, k: Letter, l: Letter, m: Letter, n: Letter, o: Letter, p: Letter, q: Letter, r: Letter, s: Letter, t: Letter, u: Letter, v: Letter) extends Alphabet
+
+case class Letter(name: String, phonetic: String)
+case class Country(name: String, language: Language, leader: Person, existence: DateRange)
+case class Language(name: String, code: String, alphabet: Alphabet)
+case class Person(name: String, dateOfBirth: Date)
+case class Date(year: Int, month: Month, day: Int)
+
+case class DateRange(from: Date, toDate: Date)
+
+sealed trait Month
+case object Jan extends Month
+case object Feb extends Month
+case object Mar extends Month
+case object Apr extends Month
+case object May extends Month
+case object Jun extends Month
+case object Jul extends Month
+case object Aug extends Month
+case object Sep extends Month
+case object Oct extends Month
+case object Nov extends Month
+case object Dec extends Month