Ok so, I am guilty of this. So, let me try to fix my mistake.
It was never my intention to discourage the stdlib, nor to give the impression that it is useless.
I actually find it very useful and complete.
Curiously, contrary to what had happened latter here, usually in the gitter channel and in SO I try to answer with stdlib only solutions.
However it is true that I find cats to be very useful and I consider it as an extension to the stdlib, or a core library. Since, for me, it is really a toolbox of useful functions and abstractions that can make your life easier (especially the more FP you try to be).
I disagree with @mohitjaggi about cats being difficult to understand or harder to use (and certainly I wouldn’t call it “niche”).
In my experience reading scala with cats and doing the exercises is enough to understand the basis of the library and start using it, and in my experience that can be done in two or three weeks using only a couple of hours of free time.
It is true that the library is actually very big and that the book just touches the “tip of the iceberg”, but as with most things, you will slowly learn more and more about it by using it. And, in my very personal experience, I have found myself using just what the book showed in 90% of the time.
Also for what I know, the library is actually commonly used in non-pure FP projects, like in conjunction with Akka or even Spark, as I said before, it is just a toolbox, which can be very useful.
(note this is just about cats-core, cats-effec and other projects of the typelevel ecosystem are another beast and I personally agree that not everyone should be using an
IO monad for everything)
Finally, I would also like to point out that still using just the stdlib is very plausible.
I have a couple of scripts and small programs that do not really in any library, but I do add it to most of my projects once I know that it will be somewhat big and complex.
Bonus: I am a maintainer of neotypes one of the core principles of the project was to be “Lightweight” and “non-opinionated”, as such it doesn’t depend on cats in its core module, but it provides an integration module. While I o not regret the choice of being non-opinionated, I have found myself re-implementing a couple of useful functions that cats provide, being the famous
traverse the first one.