sealed trait List[+A] case object Nil extends List[Nothing]
Nila singleton since you don't need different instances for
List[Nothing], one is enough to cover all cases
a(es) submits a Callable to the ExecutorService when a is a forked Par. If you only have one thread available, and that thread is running the outer Callable submitted to the ExecutorService, then as soon as it calls .call() it is going to block waiting for a thread to be available. Therefore the only thread will be sitting and waiting for another thread. This is a deadlock.
See Example 7.8
: A => Par[B]in the asyncF definition means
A => Par[B]is syntax sugar for