
proptics.instances.ScalaVersionSpecificFoldableWithIndexInstances.scala Maven / Gradle / Ivy
package proptics.instances
import scala.collection.immutable.ArraySeq
import cats.Eval
import proptics.indices.FoldableWithIndex
import proptics.instances.FoldableWithIndexInstances._
private[instances] trait ScalaVersionSpecificFoldableWithIndexInstances {
implicit final val foldableWithIndexLazyList: FoldableWithIndex[LazyList, Int] = new FoldableWithIndex[LazyList, Int] {
override def foldLeftWithIndex[A, B](f: (B, (A, Int)) => B)(fa: LazyList[A], b: B): B =
listLikeFoldLeftWithIndex(fa.foldLeft[(B, Int)])(f)(b)
override def foldRightWithIndex[A, B](f: ((A, Int), Eval[B]) => Eval[B])(fa: LazyList[A], lb: Eval[B]): Eval[B] =
listLikeFoldRightWithIndex(f)(fa.iterator, lb)
override def exists[A](fa: LazyList[A])(f: A => Boolean): Boolean = fa.exists(f)
}
implicit final val foldableWithIndexArraySeq: FoldableWithIndex[ArraySeq, Int] = new FoldableWithIndex[ArraySeq, Int] {
override def foldLeftWithIndex[A, B](f: (B, (A, Int)) => B)(fa: ArraySeq[A], b: B): B =
listLikeFoldLeftWithIndex(fa.foldLeft[(B, Int)])(f)(b)
override def foldRightWithIndex[A, B](f: ((A, Int), Eval[B]) => Eval[B])(fa: ArraySeq[A], lb: Eval[B]): Eval[B] =
listLikeFoldRightWithIndex(f)(fa.iterator, lb)
override def exists[A](fa: ArraySeq[A])(f: A => Boolean): Boolean = fa.exists(f)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy