If you want to use callbacks or running suspended datatypes, then Effect is the typeclass to use. It contains a single function runAsync that takes a callback and returns a new instance of the datatype. The operation will not yield a result immediately; to start running the suspended computation you have to evaluate that new instance using its own start operator: unsafeRunAsync or unsafeRunSync for IO, subscribe or blocking for Observable, and await or runBlocking for Deferred.

TODO. Meanwhile you can find a short description in the intro to typeclasses.

Data Types

The following data types in Arrow provide instances that adhere to the Async type class.