src/Pure/library.scala
changeset 63734 133e3e84e6fb
parent 62590 0c837beeb5e7
child 63773 d1a5d10affc0
--- a/src/Pure/library.scala	Tue Aug 30 14:47:23 2016 +0200
+++ b/src/Pure/library.scala	Tue Aug 30 21:56:14 2016 +0200
@@ -187,4 +187,11 @@
   def insert[A](x: A)(xs: List[A]): List[A] = if (xs.contains(x)) xs else x :: xs
   def remove[A, B](x: B)(xs: List[A]): List[A] = if (member(xs)(x)) xs.filterNot(_ == x) else xs
   def update[A](x: A)(xs: List[A]): List[A] = x :: remove(x)(xs)
+
+  def distinct[A](xs: List[A], eq: (A, A) => Boolean = (x: A, y: A) => x == y): List[A] =
+  {
+    val result = new mutable.ListBuffer[A]
+    for (x <- xs if !result.exists(y => eq(x, y))) result += x
+    result.toList
+  }
 }