(define (make-table) (list '*table*)) (define (key-assoc key records) (cond [(null? records) #f] [(equal? key (caar records)) (car records)] [else (key-assoc key (cdr records))])) (define (lookup key table) (let ([r (key-assoc key (cdr table))]) (if r (cdr r) #f))) (define (table-insert! key value table) (let ([r (key-assoc key (cdr table))]) (if r (set-cdr! r value) (set-cdr! table (cons (cons key value) (cdr table))))))