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(s) offer an alternative parallel programming API to that provided by the parallel package. A Par monad allows the simple description of parallel computations, and can be used to add parallelism to pure Haskell code. The basic API is straightforward: a Par monad supports forking and simple communication in terms of IVars. This module is an interface module 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. The 'monad-par' library is one example of a concrete library providing this interface.
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.