@@ -26,32 +26,36 @@ import cats.data.Ior
26
26
* The `cats` root package contains all the trait signatures of most Scala type classes.
27
27
*
28
28
* Cats type classes are implemented using the approach from the
29
- * [[https://ropas.snu.ac.kr /~bruno/papers/TypeClasses.pdf Type classes as objects and implicits ]] article.
29
+ * " [[https://i.cs.hku.hk /~bruno/papers/TypeClasses.pdf Type classes as objects and implicits ]]" article.
30
30
*
31
- * For each type class, `cats` provides three pieces:
32
- * - Its '''signature''': a trait that is polymorphic on a type parameter.
33
- * Type class traits inherit from other type classes to indicate that any implementation of the lower type class (e.g. `Applicative`)
34
- * can also serve as an instance for the higher type class (e.g. `Functor`).
35
- * - Type class ''''instances''', which are classes and objects that implement one or more type class signatures for some specific types.
36
- * Type class instances for several data types from the Java or Scala standard libraries are declared in the subpackage `cats.instances`.
37
- * - '''Syntax extensions''', each of which provides the methods of the type class defines as extension methods
38
- * (which in Scala 2 are encoded as implicit classes) for values of any type `F`; given that an instance of the type class
39
- * for the receiver type (`this`) is in the implicit scope.
40
- * Syntax extensions are declared in the `cats.syntax` package.
41
- * - 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.
42
- * The purpose of these laws is to declare some algebraic relations (equations) between Scala expressions involving the operations
43
- * of the type class, and test (but not verify) that implemented instances satisfy those equations.
44
- * Laws are defined in the `cats-laws` package.
31
+ * For each type class, `cats` provides four pieces:
32
+ * - Its '''signature''': a trait that is polymorphic on a type parameter.
33
+ * Type class traits inherit from other type classes to indicate that any implementation of the lower type class
34
+ * (e.g. [[Applicative `Applicative` ]])
35
+ * can also serve as an instance for the higher type class (e.g. [[Functor `Functor` ]]).
36
+ * - Type class '''instances''', which are classes and objects that implement one or more type class signatures for some specific types.
37
+ * Type class instances for several data types from the Java or Scala standard libraries are declared
38
+ * in the subpackage [[cats.instances `cats.instances` ]].
39
+ * - '''Syntax extensions''', each of which provides the methods of the type class defined as extension methods
40
+ * (which in Scala 2 are encoded as implicit classes) for values of any type `F`; given that an instance of the type class
41
+ * for the receiver type (`this`) is in the implicit scope.
42
+ * Syntax extensions are declared in the [[cats.syntax `cats.syntax` ]] package.
43
+ * - 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.
44
+ * The purpose of these laws is to declare some algebraic relations (equations) between Scala expressions involving the operations
45
+ * of the type class, and test (but not verify) that implemented instances satisfy those equations.
46
+ * Laws are defined in the [[cats.laws `cats.laws` ]] package.
45
47
*
46
48
* Although most of cats type classes are declared in this package, some are declared in other packages:
47
- * - type classes that operate on base types (kind `*`), and their implementations for standard library types,
48
- * are contained in `cats.kernel`, which is a different SBT project. However, they are re-exported from this package.
49
- * - type classes of kind `F[_, _]`, such as [[cats.arrow.Profunctor ]]" or [[cats.arrow.Arrow ]], which are relevant for
50
- * Functional Reactive Programming or optics, are declared in the `cats.arrow` package.
51
- * - Also, those type classes that abstract over (pure or impure) functional runtime effects are declared
52
- * in the [[https://typelevel.org/cats-effect/ cats-effect library ]].
53
- * - Some type classes for which no laws can be provided are left out of the main road, in a small and dirty alley.
54
- * These are the `alleycats`.
49
+ * - type classes that operate on base types (kind `*`), and their implementations for standard library types,
50
+ * are contained in [[cats.kernel `cats.kernel` ]], which is a different SBT project. However, they are re-exported from this package.
51
+ * - type classes of kind `F[_, _]`,
52
+ * such as [[cats.arrow.Profunctor `cats.arrow.Profunctor` ]] or [[cats.arrow.Arrow `cats.arrow.Arrow` ]],
53
+ * which are relevant for
54
+ * Functional Reactive Programming or optics, are declared in the [[cats.arrow `cats.arrow` ]] package.
55
+ * - Also, those type classes that abstract over (pure or impure) functional runtime effects are declared
56
+ * in the [[https://typelevel.org/cats-effect/ cats-effect library ]].
57
+ * - Some type classes for which no laws can be provided are left out of the main road, in a small and dirty alley.
58
+ * These are the [[alleycats `alleycats` ]].
55
59
*/
56
60
package object cats {
57
61
0 commit comments