Skip to content

Commit 17a9897

Browse files
add lazy withFilter() method for efficient compilation of for-comprehensions with if guard
1 parent 9db3b7e commit 17a9897

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

core/src/main/scala/cats/FunctorFilter.scala

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,14 @@ trait FunctorFilter[F[_]] extends Serializable {
9191
mapFilter(fa)(Some(_).filterNot(f))
9292
}
9393

94-
object FunctorFilter extends ScalaVersionSpecificTraverseFilterInstances with FunctorFilterInstances0 {
94+
object FunctorFilter
95+
extends ScalaVersionSpecificTraverseFilterInstances
96+
with FunctorFilterInstances0 {
9597

9698
/** A lazy wrapper supporting Scala `for`-comprehensions.
9799
*/
98100
class WithFilter[F[_], A](fa: F[A], p: A => Boolean)(implicit
99-
F: FunctorFilter[F]
101+
F: FunctorFilter[F]
100102
) {
101103
def map[B](f: A => B): F[B] =
102104
F.mapFilter(fa)(a => if (p(a)) Some(f(a)) else None)
@@ -116,21 +118,22 @@ object FunctorFilter extends ScalaVersionSpecificTraverseFilterInstances with Fu
116118
cats.instances.vector.catsStdTraverseFilterForVector
117119
implicit def catsFunctorFilterForMap[K]: FunctorFilter[Map[K, *]] =
118120
cats.instances.map.catsStdFunctorFilterForMap[K]
119-
implicit def catsTraverseFilterForSortedMap[K]: TraverseFilter[SortedMap[K, *]] =
121+
implicit def catsTraverseFilterForSortedMap[K]
122+
: TraverseFilter[SortedMap[K, *]] =
120123
cats.instances.sortedMap.catsStdTraverseFilterForSortedMap[K]
121124
implicit def catsTraverseFilterForQueue: TraverseFilter[Queue] =
122125
cats.instances.queue.catsStdTraverseFilterForQueue
123126

124127
/** Summon an instance of [[FunctorFilter]] for `F`.
125128
*/
126129
@inline def apply[F[_]](implicit
127-
instance: FunctorFilter[F]
130+
instance: FunctorFilter[F]
128131
): FunctorFilter[F] = instance
129132

130133
@deprecated("Use cats.syntax object imports", "2.2.0")
131134
object ops {
132135
implicit def toAllFunctorFilterOps[F[_], A](
133-
target: F[A]
136+
target: F[A]
134137
)(implicit tc: FunctorFilter[F]): AllOps[F, A] {
135138
type TypeClassType = FunctorFilter[F]
136139
} =
@@ -159,7 +162,7 @@ object FunctorFilter extends ScalaVersionSpecificTraverseFilterInstances with Fu
159162
trait AllOps[F[_], A] extends Ops[F, A]
160163
trait ToFunctorFilterOps extends Serializable {
161164
implicit def toFunctorFilterOps[F[_], A](
162-
target: F[A]
165+
target: F[A]
163166
)(implicit tc: FunctorFilter[F]): Ops[F, A] {
164167
type TypeClassType = FunctorFilter[F]
165168
} =

0 commit comments

Comments
 (0)