cats
                                
                                
                                
                                    cats copied to clipboard
                            
                            
                            
                        Lightweight, modular, and extensible library for functional programming.
…but only since you can observe the `MathContext` it carries along with it: ```scala scala> import cats.implicits._, java.math.MathContext import cats.implicits._ import java.math.MathContext scala> val zero = BigDecimal("0") zero: scala.math.BigDecimal =...
I think the cats documentation is a bit hard to reach from the README, this is the expected path to [`SemigroupK`](https://github.com/typelevel/cats/blob/master/docs/src/main/tut/semigroupk.md): - Land on https://github.com/typelevel/cats - → click Documentation#website link...
The test code: ```scala val f1: Endo[Int] = i => i / 4 val f2: Endo[Int] = i => i * 2 val f3: Endo[Int] = i => i +...
It seems like it should be possible for `reduceLeftM` to short-circuit, since e.g. `foldLeftM` does: ```scala scala> import cats.data.NonEmptyStream, cats.implicits._ import cats.data.NonEmptyStream import cats.implicits._ scala> def f(i: Int): Either[Int, Int]...
`NonEmptyMap` is a bit annoying to use due to some inconsistencies: - Although it has a `.keys` method like `Map` does, it doesn't have a corresponding `.values` method. There's something...
We currently have `foldMapA` and `foldMapM` methods with identical semantics (apart from the constraint), because the monadic implementation using `tailRecM` [can be much faster](https://github.com/typelevel/cats/pull/3130#issuecomment-551531519) than the implementation that can only...
Several types in cats such as `NonEmptyChain` are defined using the newts / newtypes approach: the advantage of this is that there is zero (runtime) overhead to using these types...
- The `*` syntax for partially applied types is introduced [here](https://typelevel.org/cats/typeclasses/applicative.html) without referring to the [kind-projector plugin](https://github.com/typelevel/kind-projector#inline-syntax). It would be useful to add an explanatory comment in the code or...
The implicits `catsKernelStdPartialOrderForVector` and `catsKernelStdHashForVector` ([here](https://github.com/typelevel/cats/blob/master/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala#L11)) are ambiguous if `A` has both `PartialOrder` and `Hash` instances, and we're looking for an `Eq[Vector[A]]`. (`List` seems to have the same problem.)
I think that the situations in which this arises are somewhat uncommon, but I don't know of any good way to work around it when it does happen. For example...