From: Chris Hanson Date: Wed, 8 Dec 1993 21:13:14 +0000 (+0000) Subject: Change procedures that convert hash tables to lists so that they don't X-Git-Tag: 20090517-FFI~7380 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=92fb626835298441b46d4a6ce5786d6f74380a36;p=mit-scheme.git Change procedures that convert hash tables to lists so that they don't include invalid entries in the result. --- diff --git a/v7/src/runtime/hashtb.scm b/v7/src/runtime/hashtb.scm index 317ebb1f4..45cab699b 100644 --- a/v7/src/runtime/hashtb.scm +++ b/v7/src/runtime/hashtb.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: hashtb.scm,v 1.16 1993/10/20 22:05:02 cph Exp $ +$Id: hashtb.scm,v 1.17 1993/12/08 21:13:14 cph Exp $ Copyright (c) 1990-93 Massachusetts Institute of Technology @@ -336,7 +336,17 @@ MIT in each case. |# (table->list table (table-entry-datum table))) (define (table->list table entry->element) - (let ((buckets (table-buckets table))) + (let ((buckets (table-buckets table)) + (cons-element + (let ((entry-valid? (table-entry-valid? table))) + (if (eq? strong-valid? entry-valid?) + (lambda (entry result) + (cons (entry->element entry) result)) + (lambda (entry result) + (let ((element (entry->element entry))) + (if (entry-valid? entry) + (cons element result) + result))))))) (let ((n-buckets (vector-length buckets))) (let loop ((n 0) (result '())) (if (fix:< n n-buckets) @@ -345,7 +355,7 @@ MIT in each case. |# (if (null? entries) result (loop (cdr entries) - (cons (entry->element (car entries)) result))))) + (cons-element (car entries) result))))) result))))) ;;;; Parameters