Guest User

Untitled

a guest
May 15th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.42 KB | None | 0 0
  1. def collapse[A](set: Set[A])(merge: (A, A) => Option[A]): Set[A] = {
  2.   val (back, _) = set.foldLeft((Set[A](), set)) {
  3.     case ((acc, set), elem) => {
  4.       val set2 = set - elem
  5.       val (merged, set3) = set2.foldLeft((elem, set2)) {
  6.         case ((elem, set2), elem2) =>
  7.           merge(elem, elem2) map { e => (e, set2 - elem2) } getOrElse (elem, set2)
  8.       }
  9.      
  10.       (acc + merged, set3)
  11.     }
  12.   }
  13.  
  14.   back
  15. }
Add Comment
Please, Sign In to add comment