Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Task/IO interoperability proposal #1355
Right now the Scala ecosystem is noticing a proliferation of
Plus there's always the standard
The Java world actually faced the same problem with proliferation of multiple solutions for streaming, for example Akka Streams, RxJava, Reactor, etc. and came up with Reactive Streams and now Flow in Java 9 (a competing interface probably because Oracle suffers from NIH, but I don't really know).
These APIs, even though they are ugly and OOP, specify a communication protocol meant for middleware that allow users to use their favorite streaming library and still have their stuff working with say web frameworks that understand this protocol, without having to build conversions by themselves, which are always error prone.
I would like to propose a collaboration on something similar, the primary use-case being seamless conversions between types, since that's the number 1 problem that users have when using combinations of libraries.
I have started such a project at: https://github.com/effects4s/effects4s
The goals of the project are:
As a visual representation of the hierarchy:
Quick links to the (currently) defined type-classes:
(Edit: those laws are not pure, because they need to observe side-effects or non-termination and the purpose is to provide a useful TCK, which is also a good argument for not having such type-classes in
My hope is to make
If there's interest, I can submit an initial PR for you to see exactly what this involves. In the project's tests, I'm also describing a Task-like type and so you can see its Async implementation.
Sorry for the long prose. I'm opening this issue to ask if there's any possibility of this happening.