Must obey the laws defined in cats.laws.ArrowLaws.
Must obey the laws defined in cats.laws.ArrowChoiceLaws.
Must obey the laws defined in cats.laws.CategoryLaws.
In a Commutative Arrow F[_, _], the split operation (or ***
) is commutative,
which means that there is non-interference between the effect of the paired arrows.
Must obey the laws defined in cats.laws.ComposeLaws.
Must obey the laws defined in cats.laws.ComposeLaws.
Here's how you can use >>>
and <<<
Example:
scala> import cats.implicits._ scala> val f : Int => Int = (_ + 1) scala> val g : Int => Int = (_ * 100) scala> (f >>> g)(3) res0: Int = 400 scala> (f <<< g)(3) res1: Int = 301
FunctionK[F[_], G[_]]
is a functor transformation from F
to G
in the same manner that function A => B
is a morphism from values
of type A
to B
.
FunctionK[F[_], G[_]]
is a functor transformation from F
to G
in the same manner that function A => B
is a morphism from values
of type A
to B
.
An easy way to create a FunctionK instance is to use the Polymorphic
lambdas provided by non/kind-projector v0.9+. E.g.
val listToOption = λ[FunctionK[List, Option]](_.headOption)
A Profunctor is a Contravariant functor on its first type parameter and a Functor on its second type parameter.
A Profunctor is a Contravariant functor on its first type parameter and a Functor on its second type parameter.
Must obey the laws defined in cats.laws.ProfunctorLaws.
Must obey the laws defined in cats.laws.StrongLaws.
In a Commutative Arrow F[_, _], the split operation (or
***
) is commutative, which means that there is non-interference between the effect of the paired arrows.Must obey the laws in CommutativeArrowLaws