All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pimpathon.set.scala Maven / Gradle / Ivy

package pimpathon

import scala.collection.{mutable ⇒ M, GenTraversable, GenTraversableLike}

import pimpathon.any._
import pimpathon.list._


object set extends genTraversableLike[Set] {
  implicit def setPimps[A](set: Set[A]): SetPimps[A] = new SetPimps[A](set)

  class SetPimps[A](val set: Set[A]) {
    def notContains(elem: A): Boolean = !set.contains(elem)

    def powerSet: Set[Set[A]] = {
      def recurse(list: List[A]): List[List[A]] =
        list.unconsC(List(Nil), head ⇒ tail ⇒ recurse(tail) |> (ps ⇒ ps ++ ps.map(head :: _)))

      recurse(set.toList).map(_.toSet).toSet
    }

    def toMutable: M.Set[A] = mutable
    def mutable: M.Set[A] = M.Set.empty[A] ++ set
  }

  protected def toGTL[sa](s: Set[sa]): GenTraversableLike[sa, GenTraversable[sa]] = s
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy