You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://index.scala-lang.org/typelevel/cats/cats-core)
16
-
[](https://opencollective.com/typelevel)[](https://gitter.im/typelevel/cats)
[](https://opencollective.com/typelevel)
@@ -37,7 +27,7 @@ Regardless, you do not need to know anything about category theory to use Cats.
37
27
38
28
This project exists thanks to [all the people who contribute](https://github.com/typelevel/cats/graphs/contributors). We welcome contributions to Cats and would love for you to help build
39
29
Cats. See our [contributor guide](https://typelevel.org/cats/contributing.html) for more
40
-
information about how you can get involved as a developer. If you are looking for something to start with, [here is a beginner friendly list](https://github.com/typelevel/cats/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
30
+
information about how you can get involved as a developer. If you are looking for something to start with, [here is a beginner friendly list](https://github.com/typelevel/cats/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
41
31
42
32
### Financial Contributors
43
33
@@ -109,14 +99,14 @@ functionality, you can pick-and-choose from amongst these modules
109
99
*`cats-free`: Free structures such as the free monad, and supporting type classes.
110
100
*`cats-testkit`: lib for writing tests for type class instances using laws.
111
101
*`algebra`: Type classes to represent algebraic structures.
112
-
*`alleycats-core`: Cats instances and classes which are not lawful.
113
-
114
-
There are several other Cats modules that are in separate repos so that they can
115
-
maintain independent release cycles.
116
-
117
-
*[`cats-effect`](https://github.com/typelevel/cats-effect): standard `IO` type together with `Sync`, `Async` and `Effect` type classes
102
+
*`alleycats-core`: Cats instances and classes which are not lawful.
103
+
104
+
There are several other Cats modules that are in separate repos so that they can
105
+
maintain independent release cycles.
106
+
107
+
*[`cats-effect`](https://github.com/typelevel/cats-effect): standard `IO` type together with `Sync`, `Async` and `Effect` type classes
118
108
*[`cats-mtl`](https://github.com/typelevel/cats-mtl): transformer typeclasses for Cats' Monads, Applicatives and Functors.
119
-
*[`mouse`](https://github.com/typelevel/mouse): a small companion to Cats that provides convenient syntax (aka extension methods)
109
+
*[`mouse`](https://github.com/typelevel/mouse): a small companion to Cats that provides convenient syntax (aka extension methods)
120
110
*[`kittens`](https://github.com/typelevel/kittens): automatic type class instance derivation for Cats and generic utility functions
121
111
*[`cats-tagless`](https://github.com/typelevel/cats-tagless): Utilities for tagless final encoded algebras
122
112
*[`cats-collections`](https://github.com/typelevel/cats-collections): Data structures which facilitate pure functional programming
@@ -140,24 +130,15 @@ Links:
140
130
141
131
### Community
142
132
143
-
Discussion around Cats is currently happening on Github issues, PR pages,
144
-
two Gitter channels, and we're also trying out Discord:
145
-
146
-
[Typelevel Discord](https://discord.gg/XF3CXcMzqD) has access to all of the
147
-
Typelevel library channels as well as community channels. Please join us!
148
-
149
-
[Gitter channel cats](https://gitter.im/typelevel/cats) is for general user
150
-
questions and discussions, and
133
+
Discussion around Cats is currently happening on GitHub issues, PR pages,
is dedicated for Cats development related discussions. For people who wants to
154
-
follow closely and/or to participate in the decisions in Cats development,
155
-
this is the room to join.
136
+
The [Typelevel Discord](https://discord.gg/XF3CXcMzqD) has \#cats and \#cats-dev
137
+
channels, as well as community channels such as \#beginners. Please join us!
156
138
157
139
People are expected to follow the
158
140
[Scala Code of Conduct](https://www.scala-lang.org/conduct/) when
159
-
discussing Cats on the Github page, Gitter channel, or other
160
-
venues.
141
+
discussing Cats on GitHub, Discord, or other venues.
161
142
162
143
We hope that our community will be respectful, helpful, and kind. If
163
144
you find yourself embroiled in a situation that becomes heated, or
@@ -171,41 +152,41 @@ immediately so that we can support you.
171
152
172
153
### Binary compatibility and versioning
173
154
174
-
After `1.0.0` release, we [decided](https://github.com/typelevel/cats/issues/1233)
155
+
After `1.0.0` release, we [decided](https://github.com/typelevel/cats/issues/1233)
175
156
to use *MAJOR.MINOR.PATCH*[Semantic Versioning 2.0.0](http://semver.org/)
176
-
going forward, which is different from the *EPOCH.MAJOR.MINOR* scheme common among
177
-
Java and Scala libraries (including the Scala lang).
157
+
going forward, which is different from the *EPOCH.MAJOR.MINOR* scheme common among
158
+
Java and Scala libraries (including the Scala lang).
178
159
179
160
Cats strives to provide a solid and stable foundation for an ecosystem of
180
-
FP libraries. Thus, we treat backward binary compatibility maintenance with a high priority.
161
+
FP libraries. Thus, we treat backward binary compatibility maintenance with a high priority.
181
162
In semantic versioning, backward breaking change is **ONLY** allowed between *MAJOR* versions.
182
163
We will maintain backward binary compatibility between *PATCH* AND *MINOR* versions.
183
-
For example, when we release Cats `1.1.0`, it will be backward binary compatible
184
-
with the previous `1.0.x` versions. I.E. the new JAR will be a drop-in replacement for
164
+
For example, when we release Cats `1.1.0`, it will be backward binary compatible
165
+
with the previous `1.0.x` versions. I.E. the new JAR will be a drop-in replacement for
185
166
the old one. This is critical when your application has a diamond
186
-
dependency on Cats - depending on two or more libraries that all depend on Cats.
187
-
If one library upgrades to the new `1.1.0` Cats before the other one does, your
167
+
dependency on Cats - depending on two or more libraries that all depend on Cats.
168
+
If one library upgrades to the new `1.1.0` Cats before the other one does, your
188
169
application still runs thanks to this backward binary compatibility.
189
170
190
-
Also worth noting is that according to semantic versioning,
191
-
*MINOR* version Y (x.Y.z | x > 0) MUST be incremented
192
-
if new, backwards compatible functionality is introduced to the public API.
171
+
Also worth noting is that according to semantic versioning,
172
+
*MINOR* version Y (x.Y.z | x > 0) MUST be incremented
173
+
if new, backwards compatible functionality is introduced to the public API.
193
174
It MUST be incremented if any public API functionality is marked as deprecated.
194
175
195
176
Any binary breaking changes will require a *MAJOR* version bump, which we will be very
196
-
cautious about. We will also consider using `organization` and package name for major
197
-
versioning in the future. But that decision is yet to be made.
177
+
cautious about. We will also consider using `organization` and package name for major
178
+
versioning in the future. But that decision is yet to be made.
198
179
199
180
### Adopters
200
181
201
-
Here's a (non-exhaustive) list of companies that use Cats in production. Don't see yours? [You can add it in a PR!](https://github.com/typelevel/cats/edit/main/README.md) And if you can, consider [supporting us](https://opencollective.com/typelevel).
182
+
Here's a (non-exhaustive) list of companies that use Cats in production. Don't see yours? [You can add it in a PR!](https://github.com/typelevel/cats/edit/main/README.md) And if you can, consider [supporting us](https://opencollective.com/typelevel).
Copy file name to clipboardexpand all lines: docs/src/main/mdoc/faq.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ Please refer to the [jump start guide]({{ site.baseurl }}/jump_start_guide.html)
49
49
50
50
Cats and [Scalaz](https://github.com/scalaz/scalaz) have the same goal: to facilitate pure functional programming in Scala applications. However the underlying core strategy is different; Scalaz took the approach of trying to provide a single batteries-included *standard library* for FP that powers the Scala applications. Cats, on the other hand, aims to help build an [ecosystem](/cats/#ecosystem) of pure FP libraries by providing a solid and stable foundation; these libraries can have their own styles and personalities, competing with each other, while at the same time playing nice. It is through this ecosystem of FP libraries (cats included) that Scala applications can be powered with "FP awesome-ness" and beyond by picking whatever best fit their needs.
51
51
52
-
Based on this core strategy, Cats takes a [modular](/cats/motivations#modularity) approach and focuses on providing core, [binary compatible](/cats/#binary-compatibility-and-versioning), [approachable](/cats/motivations#approachability) and [efficient](/cats/motivations#efficiency) abstractions. It provides a welcoming and supportive environment for the [user community](https://gitter.im/typelevel/cats) governed by the [Scala code of conduct](https://www.scala-lang.org/conduct/). It also takes great effort in supplying a comprehensive and beginner-friendly [documentation](/cats/#documentation).
52
+
Based on this core strategy, Cats takes a [modular](/cats/motivations#modularity) approach and focuses on providing core, [binary compatible](/cats/#binary-compatibility-and-versioning), [approachable](/cats/motivations#approachability) and [efficient](/cats/motivations#efficiency) abstractions. It provides a welcoming and supportive environment for the [user community](https://discord.gg/XF3CXcMzqD) governed by the [Scala Code of Conduct](https://www.scala-lang.org/conduct/). It also takes great effort in supplying a comprehensive and beginner-friendly [documentation](/cats/#documentation).
53
53
54
54
## <aid="either"href="#either"></a>Where is right-biased Either?
55
55
Up through Cats 0.7.x we had `cats.data.Xor`, which was effectively `scala.util.Either`, but right-biased by default and with
0 commit comments