Expose queue-prepare-for-dequeue

This commit is contained in:
Tony Garnock-Jones 2014-06-11 16:02:17 -04:00
parent e0aae6e3e0
commit 3e6fd930c5
1 changed files with 3 additions and 2 deletions

View File

@ -4,6 +4,7 @@
queue? queue?
enqueue enqueue
enqueue-all enqueue-all
queue-prepare-for-dequeue
dequeue dequeue
list->queue list->queue
queue->list queue->list
@ -26,13 +27,13 @@
(queue (queue-head q) (queue (queue-head q)
(append (reverse v) (queue-tail q)))) (append (reverse v) (queue-tail q))))
(define (shuffle q) (define (queue-prepare-for-dequeue q)
(if (null? (queue-head q)) (if (null? (queue-head q))
(queue (reverse (queue-tail q)) '()) (queue (reverse (queue-tail q)) '())
q)) q))
(define (dequeue q) (define (dequeue q)
(let ((q1 (shuffle q))) (let ((q1 (queue-prepare-for-dequeue q)))
(values (car (queue-head q1)) (values (car (queue-head q1))
(queue (cdr (queue-head q1)) (queue-tail q1))))) (queue (cdr (queue-head q1)) (queue-tail q1)))))