Changeset 900


Ignore:
Timestamp:
Feb 16, 2005, 2:14:26 AM (17 years ago)
Author:
bryan
Message:

%hash-table-equalp uses :test arg instead of equalp.

spec says: equalp descends hash-tables by first comparing the count of
entries and the :test function; if those are the same, it compares the
keys of the tables using the :test function and then the values of the
matching keys using equalp recursively.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-0/l0-hash.lisp

    r78 r900  
    16071607(defun %hash-table-equalp (x y)
    16081608  ; X and Y are both hash tables
    1609   (let* ((test (hash-table-test x)))
    1610     (and (eq test
    1611              (hash-table-test y))
    1612          (eql (hash-table-count x)
    1613               (hash-table-count y))
    1614          (block nil
    1615            (let* ((default (cons nil nil))
    1616                   (foo #'(lambda (k v)
    1617                            (let ((y-value (gethash k y default)))
    1618                              (unless (and (neq default y-value)
    1619                                           (funcall test v y-value))
    1620                                (return nil))))))
    1621              (declare (dynamic-extent foo default))
    1622              (maphash foo x))
    1623            t))))
     1609  (and (eq (hash-table-test x)
     1610           (hash-table-test y))
     1611       (eql (hash-table-count x)
     1612            (hash-table-count y))
     1613       (block nil
     1614         (let* ((default (cons nil nil))
     1615                (foo #'(lambda (k v)
     1616                         (let ((y-value (gethash k y default)))
     1617                           (unless (and (neq default y-value)
     1618                                        (equalp v y-value))
     1619                             (return nil))))))
     1620           (declare (dynamic-extent foo default))
     1621           (maphash foo x))
     1622         t)))
    16241623
    16251624(defun sxhash (s-expr)
Note: See TracChangeset for help on using the changeset viewer.