|
Scala example source code file (Iterable.scala)
The Iterable.scala Scala example source codepackage scalaz package std trait IterableInstances { implicit def iterableShow[CC[X] <: Iterable[X], A: Show]: Show[CC[A]] = new Show[CC[A]] { override def show(as: CC[A]) = "[" +: Cord.mkCord(",", as.map(Show[A].show(_)).toSeq:_*) :+ "]" } /** Lexicographical ordering */ implicit def iterableOrder[A](implicit A: Order[A]): Order[Iterable[A]] = new Order[Iterable[A]] { def order(a1: Iterable[A], a2: Iterable[A]): Ordering = { import scalaz.Ordering._ val i1 = a1.iterator val i2 = a2.iterator while (i1.hasNext && i2.hasNext) { val a1 = i1.next() val a2 = i2.next() val o = A.order(a1, a2) if (o != EQ) { return o } } anyVal.booleanInstance.order(i1.hasNext, i2.hasNext) } } implicit def iterableEqual[CC[X] <: Iterable[X], A: Equal]: Equal[CC[A]] = new Equal[CC[A]] { def equal(a1: CC[A], a2: CC[A]) = { val i1 = a1.iterator val i2 = a2.iterator var b = false while (i1.hasNext && i2.hasNext && !b) { val x1 = i1.next val x2 = i2.next if (!Equal[A].equal(x1, x2)) { b = true } } !(b || i1.hasNext || i2.hasNext) } } implicit def iterableSubtypeFoldable[I[X] <: Iterable[X]]: Foldable[I] = new Foldable[I] { def foldMap[A,B](fa: I[A])(f: A => B)(implicit F: Monoid[B]) = foldLeft(fa, F.zero)((x,y) => Monoid[B].append(x, f(y))) def foldRight[A, B](fa: I[A], b: => B)(f: (A, => B) => B) = fa.foldRight(b)(f(_, _)) override def foldLeft[A, B](fa: I[A], b: B)(f: (B, A) => B): B = fa.foldLeft(b)(f) override def length[A](a: I[A]) = { var n = 0 val i = a.iterator while (i.hasNext) { n = n + 1 i.next } n } override def any[A](fa: I[A])(p: A => Boolean): Boolean = fa.exists(p) override def all[A](fa: I[A])(p: A => Boolean): Boolean = fa.forall(p) } } object iterable extends IterableInstances Other Scala examples (source code examples)Here is a short list of links related to this Scala Iterable.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.