Monix Task: Lazy, Async & Awesome

Presentation from flatMap(Oslo) 2016 by @alexelcu:

Media:

Also see Akka & Monix: Controlling Power Plants (Typelevel Summit, Oslo, 2016).

Abstract

Scala’s Future from the standard library is great, but sometimes we need more.

A Future strives to be a value, one detached from time and for this reason its capabilities are restricted and for some use-cases its behavior ends up being unintuitive. Hence, while the Future/Promise pattern is great for representing asynchronous results of processes that may or may not be started yet, it cannot be used as a specification for an asynchronous computation.

The Monix Task is in essence about dealing with asynchronous computations and non-determinism, being inspired by the Scalaz Task and designed from the ground up for performance and to be compatible with Scala.js/Javascript runtimes and with the Cats library. It also makes use of Scala’s Future to represent results, the two being complementary.

In this talk I’ll show you its design, when you should use it and why in dealing with asynchronicity it’s better to work with Task instead of blocking threads.