(define (hash-table-equal? a b) (and (= (hash-table-size a) (hash-table-size b)) (let ((missing (list))) (call/cc (lambda (result) (hash-table-for-each a (lambda (k va) (let ((vb (hash-table-ref/default b k missing ))) (when (or (eq? missing vb) (not (equal? va vb))) (result #f))))) (result #t))))))