7mind / izumi

Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
https://izumi.7mind.io
BSD 2-Clause "Simplified" License
615 stars 66 forks source link

Unify BIO/MiniBIO/QuasiIO #787

Open neko-kai opened 4 years ago

neko-kai commented 4 years ago

We currently use DIEffect typeclass in distage for interoperability with monofunctor effect types that define a Sync instance, even though the bifunctor case is handled by BIO. There's a way to turn monofunctor effects into bifunctors by wrapping typed errors into a special Throwable. We could probably use that to make everything just use BIO

pshirshov commented 1 year ago

I guess QuasiIO and MiniBIO are relevant too.

pshirshov commented 1 year ago

I think we may remove QuasiAsync by providing Identity implementations for Parallel3, Async3 and Temporal3 ([Nothing, Throwable, _]). Same for QuasiIO, it duplicates BIO. The lawless Identity implementation should be hidden in a separate namespace.