RosettaCodeData/Task/Queue-Definition/Scheme/queue-definition-1.ss

16 lines
391 B
Scheme

(define (make-queue)
(make-vector 1 '()))
(define (push a queue)
(vector-set! queue 0 (append (vector-ref queue 0) (list a))))
(define (empty? queue)
(null? (vector-ref queue 0)))
(define (pop queue)
(if (empty? queue)
(error "can not pop an empty queue")
(let ((ret (car (vector-ref queue 0))))
(vector-set! queue 0 (cdr (vector-ref queue 0)))
ret)))