- eList : List α
The enqueue list, which stores elements that have just been pushed (with the most recently enqueued elements at the head).
- dList : List α
The dequeue list, which buffers elements ready to be dequeued (with the head being the next item to be yielded by
A functional queue data structure, using two back-to-back lists.
If we think of the queue as having elements pushed on the front and
popped from the back, then the queue itself is effectively
eList ++ dList.reverse.