(unit/sig (mt mt? enq deq front-of put random-interval) (import plt:userspace^) ;; ------------------------------------------------------------------------ ;; The Queue: (define mt null) (define mt? null?) (define enq (lambda (aqueue element) (append aqueue (list element)))) (define mk-front-of (lambda (tag msg op) (lambda (aqueue) (if (null? aqueue) (error tag msg) (op aqueue))))) (define deq (mk-front-of 'deq "empty queue" cdr)) (define front-of (mk-front-of 'front-of "empty queue" car)) (define put cons) ;; (random-interval low high) ;; returns a number from low...high inclusive ;; (define (random-interval low high) (+ low (random (+ (- high low) 1)))) )