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

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

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

Self Type
Arrow[F]
Annotations
@implicitNotFound( ... ) @typeclass( ... , ... )
Source
Arrow.scala
Linear Supertypes
Strong[F], Profunctor[F], Category[F], Compose[F], Serializable, Serializable, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Arrow
  2. Strong
  3. Profunctor
  4. Category
  5. Compose
  6. Serializable
  7. Serializable
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def compose[A, B, C](f: F[B, C], g: F[A, B]): F[A, C]
    Definition Classes
    Compose
    Annotations
    @op( "<<<" , true )
  2. abstract 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.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)
    Definition Classes
    Strong
  3. abstract def lift[A, B](f: (A) ⇒ B): F[A, B]

    Lift a function into the context of an Arrow.

    Lift a function into the context of an Arrow.

    In the reference articles "Arrows are Promiscuous...", and in the corresponding Haskell library Control.Arrow, this function is called arr.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def algebra[A]: Monoid[F[A, A]]
    Definition Classes
    CategoryCompose
  5. def algebraK: MonoidK[[α]F[α, α]]
    Definition Classes
    CategoryCompose
  6. def andThen[A, B, C](f: F[A, B], g: F[B, C]): F[A, C]
    Definition Classes
    Compose
    Annotations
    @op( ">>>" , true )
  7. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  9. 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.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
    Definition Classes
    ArrowProfunctor
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  12. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  14. def id[A]: F[A, A]
    Definition Classes
    ArrowCategory
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. 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
    Definition Classes
    Profunctor
  17. 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

    Definition Classes
    Profunctor
  18. def merge[A, B, C](f: F[A, B], g: F[A, C]): F[A, (B, C)]

    Create a new computation F that merge outputs of f and g both having the same input

    Create a new computation F that merge outputs of f and g both having the same input

    Example:

    scala> import cats.implicits._
    scala> val addEmpty: Int => Int = _ + 0
    scala> val multiplyEmpty: Int => Double= _ * 1d
    scala> val f: Int => (Int, Double) = addEmpty &&& multiplyEmpty
    scala> f(1)
    res0: (Int, Double) = (1,1.0)

    Note that the arrow laws do not guarantee the non-interference between the _effects_ of f and g in the context of F. This means that f &&& g may not be equivalent to g &&& f.

    Annotations
    @op( "&&&" , true )
  19. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  20. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  21. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  22. 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
    Definition Classes
    Profunctor
  23. 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

    Definition Classes
    Profunctor
  24. 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.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)
    Definition Classes
    ArrowStrong
  25. def split[A, B, C, D](f: F[A, B], g: F[C, D]): F[(A, C), (B, D)]

    Create a new computation F that splits its input between f and g and combines the output of each.

    Create a new computation F that splits its input between f and g and combines the output of each.

    Example:

    scala> import cats.implicits._
    scala> import cats.arrow.Arrow
    scala> val toLong: Int => Long = _.toLong
    scala> val toDouble: Float => Double = _.toDouble
    scala> val f: ((Int, Float)) => (Long, Double) = Arrow[Function1].split(toLong, toDouble)
    scala> f((3, 4.0f))
    res0: (Long, Double) = (3,4.0)

    Note that the arrow laws do not guarantee the non-interference between the _effects_ of f and g in the context of F. This means that f *** g may not be equivalent to g *** f.

    Annotations
    @op( "***" , true )
  26. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  27. def toString(): String
    Definition Classes
    AnyRef → Any
  28. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  30. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated @deprecated
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from Strong[F]

Inherited from Profunctor[F]

Inherited from Category[F]

Inherited from Compose[F]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped