An abstract interface to highly-parameterizable queues/deques.
Background: There exists a feature space for queues that extends between:
* simple, single-ended, non-concurrent, bounded queues
* double-ended, threadsafe, growable queues
... with important points inbetween (such as the queues used for work-stealing).
This package includes an interface for Deques that allows the programmer to use a single API for all of the above, while using the type-system to select an efficient implementation given the requirements (using type families).
This package also includes a simple reference implementation based on IORef and Data.Sequence.
The Par monad offers a parallel programming API based on dataflow programming. To use the `Par` monad, install the monad-par package, which includes this package as a dependency.
This package is an abstract interface only. It provides a number of type clasess, but not an implementation. The type classes separate different levels of Par functionality. See the Control.Monad.Par.Class module for more details.
Following the convention the abstract-par package, this package simply defines an interface, in the form of a type class, and does not contain any implementation. Importing this module gives the user an API to access Accelerate computations from within Par computations, with the added benefit that the Par can do integrated CPU/GPU scheduling.