An IList is the equivalent of a lazy list in the Par monad.
The tail of the list is an IVar, which allows the list to be
produced and consumed in parallel.
To fully evaluate an IList means to evaluate both the head
and tail. This does not evaluate the entire spine of the list
of course, because the tail is an IVar.