;; (use srfi-1) ;; (sys-srandom (sys-time)) ;; (define (random i) ;; (modulo (sys-random) i)) ;; (define queue ;; (list-tabulate 1000 (lambda (i) (exact->inexact (random (+ i 1)))))) ;; (define (enq x) ;; (append! queue (list x))) ;; (define (deq) ;; (unless (null? queue) (begin0 (car queue) (set! queue (cdr queue))))) ;; ;; run program run ;; (let L ([i 100000000]) ;; (unless (= i 0) ;; (enq (exact->inexact i)) ;; (deq) ;; (L (- i 1)))) ;; r5rs (define queue (let L ([i 1000]) (if (= i 0) '() (cons (exact->inexact i) (L (- i 1)))))) (define (enq x) (let L ([q queue]) (if (null? (cdr q)) (set-cdr! q (list x)) (L (cdr q))))) (define (deq) (if (null? queue) (void) (let ([old queue]) (set! queue (cdr queue)) (set-cdr! old #f) (car old)))) ;; run program run (let L ([i 100000000]) (if (= i 0) (void) (begin (enq (exact->inexact i)) (deq) (L (- i 1)))))