; sparse sets
(define n 0)
(define d #f)
(define s #f)
(define (make-set u)
(set! d (make-vector u))
(set! s (make-vector u)))
(define (clear) (set! n 0))
(define (insert k)
(vector-set! d n k)
(vector-set! s k n)
(set! n (+ n 1)))
(define (member? k)
(and (< (vector-ref s k) n)
(= (vector-ref d (vector-ref s k)) k)))
(define (for-all proc)
(do ((i 0 (+ i 1))) ((= i n))
(proc (vector-ref d i))))
(make-set 8)
(clear)
(insert 5)
(insert 1)
(insert 4)
(display (member? 0)) (newline)
(display (member? 1)) (newline)
(display (member? 2)) (newline)
(display (member? 3)) (newline)
(display (member? 4)) (newline)
(display (member? 5)) (newline)
(display (member? 6)) (newline)
(display (member? 7)) (newline)
(display d) (newline)
(display s) (newline)