Version: 4.1.4.3
4 Imperative Queues
| (require (planet cce/scheme:4:1/queue)) |
This module provides a mutable queue representation.
| (make-queue) → queue/c |
Produces an empty queue.
| (enqueue! q v) → void? |
| q : queue/c |
| v : any/c |
Adds an element to the back of a queue.
| (dequeue! q) → any/c |
| q : nonempty-queue/c |
Removes an element from the front of a nonempty queue, and returns that element.
Examples: | ||
| ||
| > (enqueue! q 1) | ||
| > (dequeue! q) | ||
1 | ||
| ; attempt to remove from empty queue | ||
| > (dequeue! q) | ||
'program broke the contract (-> "nonempty-queue" any/c) on | ||
dequeue!; expected <nonempty-queue>, given: #<queue> | ||
| > (enqueue! q 2) | ||
| > (enqueue! q 3) | ||
| > (dequeue! q) | ||
2 | ||
| > (dequeue! q) | ||
3 | ||
| ; attempt to remove from empty queue | ||
| > (dequeue! q) | ||
'program broke the contract (-> "nonempty-queue" any/c) on | ||
dequeue!; expected <nonempty-queue>, given: #<queue> |
| (queue-empty? q) → boolean? |
| q : queue/c |
Recognizes whether a queue is empty or not.
Examples: | ||
| ||
| > (queue-empty? q) | ||
#t | ||
| > (enqueue! q 1) | ||
| > (queue-empty? q) | ||
#f | ||
| > (dequeue! q) | ||
1 | ||
| > (queue-empty? q) | ||
#t |
| (queue? v) → boolean? |
| v : any/c |
This predicate recognizes queues.
Examples: |
| > (queue? (make-queue)) |
#t |
| > (queue? 'not-a-queue) |
#f |
| |
|
These contracts recognize queues; the latter requires the queue to contain at least one value.