cats
                                
                                
                                
                                    cats copied to clipboard
                            
                            
                            
                        Lightweight, modular, and extensible library for functional programming.
For example, if `F[_]` is `Either[Throwable, *]`, there would exist 2 instances of `ApplicativeError` for `OptionT[Either[Throwable, *], *]`: ```scala ApplicativeError[OptionT[Either[Throwable, *], *], Throwable] // higher priority instance derived from `F[_]`...
We have FunctorFilter and TraverseFilter. I have in the past proposed a generalization (FunctorFlatten, later AlternativeFlatten: #1337). But it seems to me the above are actually doing something like: ```scala...
when you import: ``` cats.syntax.foldable._ ``` You got two methods which look very similar in terms in what they do: ``` .foldMap[B](f: A => B)(implicit B: Monoid[B]): B .collectFold[B](f: A...
There's some major gaps around error handling in the official docs, especially painful because the whole ecosystem relies on them - library users are often instructed to use MonadError/ApplicativeError error...
There is no default instance for `Empty[Option[T]]` if T has no Monoid. But there is one for collections. Would it make sense to add an `Empty[Option[T]]` instance that behaves like...
IMO it is cumbersome to use `toEither.toValidated` thus I suggest to provide the same shortcuts we provide for EitherOps. Surely only some sugar but intuitively I am looking for `toValidated`...
...somehow. ``` at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) at cats.free.FreeT.$anonfun$step$1(FreeT.scala:163) at scala.Function1.$anonfun$andThen$1(Function1.scala:85) ``` That goes on...
# Positive integers and non-empty collections Hi all. `cats` implements non-empty collections such as `NonEmptyList`. I think we might squeeze a little more out of the concept. Wouldn't it be...
When using a la carte imports, I need to `import cats.syntax.apply._` to be able to call `contramapN`, but I expected to `import cats.syntax.contravariant._`. Here's a scastie to demonstrate: https://scastie.scala-lang.org/mrdziuban/IZmraJ4BRlugdmXfeUWoLg/3
```scala def attemptOption[A](fa: F[A]): F[Option[A]] = fa.map(_.some) Option.empty[A].pure[F] ```