language: Scala (scala-2.10.0)
date: 250 days 21 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sealed abstract class SmartTime extends Ordered[SmartTime] { x =>
        def compare(y: SmartTime) = {
                x match {
                        case InfiniteFuture => 1
                        case InfinitePast => -1
                        case ConcreteTime(x) =>
                                y match {
                                        case InfiniteFuture => -1
                                        case InfinitePast => 1
                                        case ConcreteTime(y) => x compare y
                                }
                }
        }
}
case class ConcreteTime(t: Long) extends SmartTime
case object InfiniteFuture extends SmartTime
case object InfinitePast extends SmartTime
 
object Main {
        def main(args: Array[String]): Unit = {
                val y = ConcreteTime(100)
                val z = ConcreteTime(10)
                val x = InfiniteFuture
                val p = InfinitePast
                println(Vector(y, z, x, p).sortWith(_ < _))
        }
}