Data.Concurrent.Deque.Class

# Highly parameterized Deque type(s)

type family Deque lThreaded rThreaded lDbl rDbl bnd safe elt

## The choices that select a queue-variant.

### Choice #1 -- thread safety.

data Threadsafe

data Nonthreadsafe

### Choice #2 -- double or single functionality on an end.

data SingleEnd

data DoubleEnd

### Choice #3 -- bounded or growing queues:

data Bound

data Grow

### Choice #4 -- duplication of elements.

data Safe

data Dup

## Aliases enabling more concise Deque types:

type S

type D

type NT

type T

## Aliases for commonly used Deque configurations:

type Queue a

type ConcQueue a

type ConcDeque a

type WSDeque a

# Class for basic Queue operations

class DequeClass d

# Extra capabilities: type classes

## The "unnatural" double ended cases: pop left, push right.

class PopL d

class PushR d

## Operations that only make sense for bounded queues.

class BoundedL d

class BoundedR d