src/Pure/library.scala
changeset 63867 fb46c031c841
parent 63789 af28929ff219
child 63926 70973a1b4ec0
equal deleted inserted replaced
63866:630eaf8fe9f3 63867:fb46c031c841
   196   def member[A, B](xs: List[A])(x: B): Boolean = xs.contains(x)
   196   def member[A, B](xs: List[A])(x: B): Boolean = xs.contains(x)
   197   def insert[A](x: A)(xs: List[A]): List[A] = if (xs.contains(x)) xs else x :: xs
   197   def insert[A](x: A)(xs: List[A]): List[A] = if (xs.contains(x)) xs else x :: xs
   198   def remove[A, B](x: B)(xs: List[A]): List[A] = if (member(xs)(x)) xs.filterNot(_ == x) else xs
   198   def remove[A, B](x: B)(xs: List[A]): List[A] = if (member(xs)(x)) xs.filterNot(_ == x) else xs
   199   def update[A](x: A)(xs: List[A]): List[A] = x :: remove(x)(xs)
   199   def update[A](x: A)(xs: List[A]): List[A] = x :: remove(x)(xs)
   200 
   200 
       
   201   def merge[A](xs: List[A], ys: List[A]): List[A] =
       
   202     if (xs.eq(ys)) xs
       
   203     else if (xs.isEmpty) ys
       
   204     else ys.foldRight(xs)(Library.insert(_)(_))
       
   205 
   201   def distinct[A](xs: List[A]): List[A] =
   206   def distinct[A](xs: List[A]): List[A] =
   202   {
   207   {
   203     val result = new mutable.ListBuffer[A]
   208     val result = new mutable.ListBuffer[A]
   204     xs.foreach(x => if (!result.contains(x)) result += x)
   209     xs.foreach(x => if (!result.contains(x)) result += x)
   205     result.toList
   210     result.toList