@implicitNotFound("Could not find an instance of Wander[${P}]")
Class for profunctors that support polymorphic traversals
- Companion:
- object
trait Choice[P]
trait Strong[P]
trait Profunctor[P]
trait Serializable
class Object
trait Matchable
class Any
Value members
Abstract methods
Inherited methods
Contramap on the first type parameter and map on the second type parameter
Contramap on the first type parameter and map on the second type parameter
Example:
scala> import cats.implicits._
scala> import cats.arrow.Profunctor
scala> val fab: Double => Double = x => x + 0.3
scala> val f: Int => Double = x => x.toDouble / 2
scala> val g: Double => Double = x => x * 3
scala> val h = Profunctor[Function1].dimap(fab)(f)(g)
scala> h(3)
res0: Double = 5.4
- Inherited from:
- Profunctor
Create a new F
that takes two inputs, but only modifies the first input
Create a new F
that takes two inputs, but only modifies the first input
Example:
scala> import cats.implicits._
scala> import cats.arrow.Strong
scala> val f: Int => Int = _ * 2
scala> val fab = Strong[Function1].first[Int,Int,Int](f)
scala> fab((2,3))
res0: (Int, Int) = (4,3)
- Inherited from:
- Strong
Narrows A into a subtype AA. Example:
Narrows A into a subtype AA. Example:
scala> import cats.syntax.profunctor._
scala> import cats.instances.function._
scala>
scala> sealed trait Foo
scala> case object Bar extends Foo
scala> val x1: Foo => Int = _ => 1
scala> val x2: Bar.type => Int = x1.leftNarrow
- Inherited from:
- Profunctor
contramap on the first type parameter
contramap on the first type parameter
- Inherited from:
- Profunctor
Widens B into a supertype BB. Example:
Widens B into a supertype BB. Example:
scala> import cats.syntax.profunctor._
scala> import cats.instances.function._
scala>
scala> sealed trait Foo
scala> case object Bar extends Foo
scala> val x1: Int => Bar.type = _ => Bar
scala> val x2: Int => Foo = x1.rightWiden
- Inherited from:
- Profunctor
Create a new F
that takes two inputs, but only modifies the second input
Create a new F
that takes two inputs, but only modifies the second input
Example:
scala> import cats.implicits._
scala> import cats.arrow.Strong
scala> val f: Int => Int = _ * 2
scala> val fab = Strong[Function1].second[Int,Int,Int](f)
scala> fab((2,3))
res0: (Int, Int) = (2,6)
- Inherited from:
- Strong