Packages

  • package root
    Definition Classes
    root
  • package cats

    The cats root package contains all the trait signatures of most Scala type classes.

    The cats root package contains all the trait signatures of most Scala type classes.

    Cats type classes are implemented using the approach from the Type classes as objects and implicits article.

    For each type class, cats provides three pieces: - Its signature: a trait that is polymorphic on a type parameter. Type class traits inherit from other type classes to indicate that any implementation of the lower type class (e.g. Applicative) can also serve as an instance for the higuer type class (e.g. Functor). - Type class 'instances, which are classes and objects that implement one or more type class signatures for some specific types. Type class instances for several data types from the Java or Scala standard libraries are declared in the subpackage cats.instances. - Syntax extensions, each of which provides the methods of the type class defines as extension methods (which in Scala 2 are encoded as implicit classes) for values of any type F; given that an instance of the type class for the receiver type (this) is in the implicit scope. Symtax extensions are declared in the cats.syntax package. - A set of laws, that are also generic on the type of the class, and are only defined on the operations of the type class. The purpose of these laws is to declare some algebraic relations (equations) between Scala expressions involving the operations of the type class, and test (but not verify) that implemented instances satisfy those equations. Laws are defined in the cats-laws package.

    Although most of cats type classes are declared in this package, some are declared in other packages: - type classes that operate on base types (kind *), and their implementations for standard library types, are contained in cats.kernel, which is a different SBT project. However, they are re-exported from this package. - type classes of kind F[_, _], such as cats.arrow.Profunctor" or cats.arrow.Arrow, which are relevant for Functional Reactive Programming or optics, are declared in the cats.arrow package. - Also, those type classes that abstract over (pure or impure) functional runtime effects are declared in the cats-effect library. - Some type classes for which no laws can be provided are left out of the main road, in a small and dirty alley. These are the alleycats.

    Definition Classes
    root
  • package arrow
    Definition Classes
    cats
  • Arrow
  • ArrowChoice
  • Category
  • Choice
  • CommutativeArrow
  • Compose
  • FunctionK
  • Profunctor
  • Strong
  • package conversions
    Definition Classes
    cats
  • package data
    Definition Classes
    cats
  • package evidence
    Definition Classes
    cats
  • package free
    Definition Classes
    cats
  • package instances
    Definition Classes
    cats
  • package kernel
    Definition Classes
    cats
  • package syntax
    Definition Classes
    cats
p

cats

arrow

package arrow

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. trait Arrow[F[_, _]] extends Category[F] with Strong[F]

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

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

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  2. trait ArrowChoice[F[_, _]] extends Arrow[F] with Choice[F]

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

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

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  3. trait Category[F[_, _]] extends Compose[F]

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

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

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  4. trait Choice[F[_, _]] extends Category[F]
    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  5. trait CommutativeArrow[F[_, _]] extends Arrow[F]

    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.

    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

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  6. trait Compose[F[_, _]] extends Serializable

    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
    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  7. trait FunctionK[F[_], G[_]] extends Serializable

    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 typelevel/kind-projector v0.9+. E.g.

    val listToOption = λ[FunctionK[List, Option]](_.headOption)
  8. trait Profunctor[F[_, _]] extends Serializable

    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.

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )
  9. trait Strong[F[_, _]] extends Profunctor[F]

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

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

    Annotations
    @implicitNotFound( ... ) @typeclass( ... , ... )

Value Members

  1. object Arrow extends Serializable
  2. object ArrowChoice extends Serializable
  3. object Category extends Serializable
  4. object Choice extends Serializable
  5. object CommutativeArrow extends Serializable
  6. object Compose extends Serializable
  7. object FunctionK extends FunctionKMacroMethods with Serializable
  8. object Profunctor extends Serializable
  9. object Strong extends Serializable

Ungrouped