Paste number 71429: nothing really

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:
Raw Source | XML | Display As
(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.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.