cats-docs
Members list
Concise view
Packages
package algebra
package algebra.instances
package algebra.instances.all
package algebra.instances.array
package algebra.instances.bigDecimal
package algebra.instances.bigInt
package algebra.instances.bitSet
package algebra.instances.boolean
package algebra.instances.byte
package algebra.instances.char
package algebra.instances.int
package algebra.instances.list
package algebra.instances.long
package algebra.instances.map
package algebra.instances.option
package algebra.instances.set
package algebra.instances.short
package algebra.instances.string
package algebra.instances.tuple
package algebra.instances.unit
package algebra.lattice
package algebra.laws
package algebra.ring
package alleycats
package alleycats.compat
package alleycats.laws.discipline
package alleycats.std
package alleycats.syntax
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 thecats.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 incats.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 thecats.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
.
Attributes
package cats.arrow
package cats.conversions
package cats.data
package cats.evidence
package cats.free
package cats.instances
package cats.instances.symbol
package cats.kernel
package cats.kernel.instances
package cats.kernel.instances.all
package cats.kernel.instances.arraySeq
package cats.kernel.instances.bigDecimal
package cats.kernel.instances.bigInt
package cats.kernel.instances.bitSet
package cats.kernel.instances.boolean
package cats.kernel.instances.byte
package cats.kernel.instances.char
package cats.kernel.instances.deadline
package cats.kernel.instances.double
package cats.kernel.instances.duration
package cats.kernel.instances.either
package cats.kernel.instances.float
package cats.kernel.instances.function
package cats.kernel.instances.int
package cats.kernel.instances.lazyList
package cats.kernel.instances.list
package cats.kernel.instances.long
package cats.kernel.instances.map
package cats.kernel.instances.option
package cats.kernel.instances.queue
package cats.kernel.instances.seq
package cats.kernel.instances.set
package cats.kernel.instances.short
package cats.kernel.instances.sortedMap
package cats.kernel.instances.sortedSet
package cats.kernel.instances.stream
package cats.kernel.instances.string
package cats.kernel.instances.symbol
package cats.kernel.instances.tuple
package cats.kernel.instances.unit
package cats.kernel.instances.uuid
package cats.kernel.instances.vector
package cats.kernel.laws
package cats.kernel.laws.discipline
package cats.laws
package cats.laws.discipline
package cats.syntax
package cats.tests