The monad-par library provides a way to specify the job in both pure as well as IO contexts. The monad-par library implements a work-stealing scheduler. Using monad-par, we can define a future value, that is, a context where a value is expected to be evaluated sometime in future, and specify the point where to fork the computation. The monad-par library takes care of scheduling these computation on threads and fulfilling the context for where the computed value should be kept.
In this recipe, we compute fibonacci number using two methods, first with a naive recursive method, and second implementing the same recursion using the monad-par library.