| Paste number 71429: | nothing really |
| Pasted by: | GrayShade |
| When: | 7 months, 1 day ago |
| Share: | Tweet this! | http://paste.lisp.org/+1J45 |
| Channel: | None |
| Paste contents: |
(module queue scheme
(provide make-queue empty-queue? add-to-queue! remove-first-events!)
(define (make-queue)
(define queue '())
(lambda (message)
(case message
('empty?
(lambda () (null? queue)))
('add-to-queue!
(lambda (value)
(set! queue (cons value queue))))
('remove-first-events!
(lambda ()
(define (loop result queue new-queue)
(cond
((null? queue)
(cons result new-queue))
((< (caar queue) (caar result))
(loop
(list (car queue))
(cdr queue)
(append result new-queue)))
((= (caar queue) (caar result))
(loop
(cons (car queue) result)
(cdr queue)
new-queue))
(else
(loop
result
(cdr queue)
(cons (car queue) new-queue)))))
(let ((result
(loop
(list (car queue))
(cdr queue)
'())))
(set! queue (cdr result))
(car result)))))))
(define-syntax-rule (empty-queue? queue)
((queue 'empty?)))
(define-syntax-rule (add-to-queue! value queue)
((queue 'add-to-queue!) value))
(define-syntax-rule (remove-first-events! queue)
((queue 'remove-first-events!))))
This paste has no annotations.