Strong

cats.arrow.Strong
See theStrong companion object
trait Strong[F[_, _]] extends Profunctor[F]

Must obey the laws defined in cats.laws.StrongLaws.

Attributes

Companion
object
Source
Strong.scala
Graph
Supertypes
trait Profunctor[F]
trait Serializable
class Object
trait Matchable
class Any
Known subtypes
trait Arrow[F]
trait ArrowChoice[F]
trait CommutativeArrow[F]

Members list

Value members

Abstract methods

def first[A, B, C](fa: F[A, B]): F[(A, C), (B, C)]

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.syntax.all._
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)

Attributes

Source
Strong.scala
def second[A, B, C](fa: F[A, B]): F[(C, A), (C, B)]

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.syntax.all._
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)

Attributes

Source
Strong.scala

Inherited methods

def dimap[A, B, C, D](fab: F[A, B])(f: C => A)(g: B => D): F[C, D]

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.syntax.all._
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

Attributes

Inherited from:
Profunctor
Source
Profunctor.scala
def leftNarrow[A, B, AA <: A](fab: F[A, B]): F[AA, B]

Narrows A into a subtype AA.

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

Attributes

Inherited from:
Profunctor
Source
Profunctor.scala
def lmap[A, B, C](fab: F[A, B])(f: C => A): F[C, B]

contramap on the first type parameter

contramap on the first type parameter

Attributes

Inherited from:
Profunctor
Source
Profunctor.scala
def rightWiden[A, B, BB >: B](fab: F[A, B]): F[A, BB]

Widens B into a supertype BB.

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

Attributes

Inherited from:
Profunctor
Source
Profunctor.scala
def rmap[A, B, C](fab: F[A, B])(f: B => C): F[A, C]

map on the second type parameter

map on the second type parameter

Attributes

Inherited from:
Profunctor
Source
Profunctor.scala