cats-effect
cats-effect copied to clipboard
The pure asynchronous runtime for Scala
Implement `IO` `redeem()` and `redeemWith()` _"directly"_ without `Either` allocation (via `attempt`). Actual: ```scala def redeem[B](recover: Throwable => B, map: A => B): IO[B] = attempt.map(_.fold(recover, map)) ```
Thought it could be useful to have a way to update the value of an `IOLocal` within the scope of some task `IO[A]` Motivation was being able to set log...
Fixes #1459 I had originally started with a direct port of cats-retry, but since then I've changed the design significantly enough to warrant a proper review of the api before...
There are some docs on CE2 that are not transferred into the CE3 section that are good and not actually related to CE2 only. So, it might be a good...
#### For Consideration - [x] [unique](https://github.com/christopherdavenport/unique) - [x] [random](https://github.com/christopherdavenport/random) - [ ] [FUUID](https://github.com/christopherdavenport/FUUID) -> UUID (what to do about literal macros) - [ ] [cats-effect-time](https://github.com/christopherdavenport/cats-effect-time) - java-time instances. Considerations are...
This is related to https://github.com/typelevel/cats-effect/issues/3031, since sharing state and composing resources is tangled with understanding programs-as-values :) @davesmith00000 for example points to the [documentation for `Queue`](https://typelevel.org/cats-effect/docs/std/queue): it doesn't do a...
CE3/Dispatcher/Future/Exceptions. I have some `IO`s and convert them Futures (Enforced by Play) using `Dispatcher.unsafeToFuture`. In certain cases I raise errors using `IO.raiseError` to be handled in the unsafe region. The...
Reported by @oleg-py [here](https://gitter.im/typelevel/cats-effect-dev?at=605af4e7f07ffa1eb5608da3).  https://scastie.scala-lang.org/gLdvaPQsRpu9Gokfz9D7FA
Original: ``` java.lang.ClassCastException: interface akka.event.LoggingFilter is not assignable from class akka.event.DefaultLoggingFilter at akka.actor.ReflectiveDynamicAccess.$anonfun$getClassFor$1(ReflectiveDynamicAccess.scala:31) at scala.util.Try$.apply(Try.scala:210) at akka.actor.ReflectiveDynamicAccess.getClassFor(ReflectiveDynamicAccess.scala:28) at akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:47) at akka.actor.ActorSystemImpl.(ActorSystem.scala:926) at akka.actor.ActorSystem$.apply(ActorSystem.scala:282) at akka.actor.ActorSystem$.apply(ActorSystem.scala:326) at akka.actor.ActorSystem$.apply(ActorSystem.scala:308) at example.PlayWSResource$.$anonfun$res$1(PlayWSResource.scala:20) at...
It has to be error- and cancelation-oblivious because these are the cases in which `both` degrades to `race`. In the happy path, where both sides succeed (or only one side...