diff --git a/collects/mzlib/pretty.ss b/collects/mzlib/pretty.ss index 6849cb1..c860882 100644 --- a/collects/mzlib/pretty.ss +++ b/collects/mzlib/pretty.ss @@ -736,7 +736,9 @@ (lambda () (out (if (hash-table? obj 'equal) "#hash" - "#hasheq")) + (if (hash-table? obj 'eqv) + "#hasheqv" + "#hasheq"))) (wr-lst (hash-table-map obj (lambda (k v) (cons k (make-hide v)))) #f depth @@ -855,7 +857,9 @@ [(hash-table? obj) (out (if (hash-table? obj 'equal) "#hash" - "#hasheq")) + (if (hash-table? obj 'eqv) + "#hasheqv" + "#hasheq"))) (pp-list (hash-table-map obj cons) extra pp-expr #f depth pair? car cdr pair-open pair-close)] [(and (box? obj) print-box?) diff --git a/collects/scheme/private/old-procs.ss b/collects/scheme/private/old-procs.ss index 061fc5b..7a074fd 100644 --- a/collects/scheme/private/old-procs.ss +++ b/collects/scheme/private/old-procs.ss @@ -54,12 +54,18 @@ (make-hash) (if (eq? a 'weak) (make-weak-hasheq) - (raise-mismatch-error 'make-hash-table "bad argument: " a)))] - [(a b) (if (or (and (eq? a 'equal) + (if (eq? a 'eqv) + (make-hasheqv) + (raise-mismatch-error 'make-hash-table "bad argument: " a))))] + [(a b) (if (or (and (or (eq? a 'equal) + (eq? a 'eqv)) (eq? b 'weak)) (and (eq? a 'weak) - (eq? b 'equal))) - (make-weak-hash) + (or (eq? b 'equal) + (eq? b 'eqv)))) + (if (or (eq? a 'eqv) (eq? b 'eqv)) + (make-weak-hasheqv) + (make-weak-hash)) (raise-mismatch-error 'make-hash-table "bad arguments: " (list a b)))])) (define make-immutable-hash-table @@ -67,23 +73,30 @@ [(l) (make-immutable-hasheq l)] [(l a) (if (eq? a 'equal) (make-immutable-hash l) - (raise-mismatch-error 'make-immutable-hash-table "bad argument: " a))])) + (if (eq? a 'eqv) + (make-immutable-hasheqv l) + (raise-mismatch-error 'make-immutable-hash-table "bad argument: " a)))])) (define hash-table? (case-lambda [(v) (hash? v)] [(v a) (if (eq? a 'equal) (and (hash? v) - (not (hash-eq? v))) + (not (hash-eq? v)) + (not (hash-eqv? v))) (if (eq? a 'weak) (and (hash? v) (hash-weak? v)) - (raise-mismatch-error 'hash-table? "bad argument: " a)))] - [(v a b) (if (or (and (eq? a 'equal) + (if (eq? a 'eqv) + (hash-eqv? v) + (raise-mismatch-error 'hash-table? "bad argument: " a))))] + [(v a b) (if (or (and (or (eq? a 'equal) (eq? a 'eqv)) (eq? b 'weak)) (and (eq? a 'weak) - (eq? b 'equal))) + (or (eq? b 'equal) (eq? b 'eqv)))) (and (hash? v) - (not (hash-eq? v)) + (if (or (eq? a 'eqv) (eq? b 'eqv)) + (hash-eqv? v) + (not (or (hash-eq? v) (hash-eqv? v)))) (hash-weak? v)) (raise-mismatch-error 'hash-table? "bad arguments: " (list a b)))])))