X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fxset.lisp;h=4c65e71f895460c72d062f808429b78101ccec5d;hb=a7699535aaba71765335f3be0a2103b2f07941af;hp=38a9a2b71299ffbec30db688962ab82ed8b22ac5;hpb=edf8d3701ba59bd9f0c1bd027f3179b98250cfd0;p=sbcl.git diff --git a/src/code/xset.lisp b/src/code/xset.lisp index 38a9a2b..4c65e71 100644 --- a/src/code/xset.lisp +++ b/src/code/xset.lisp @@ -51,7 +51,7 @@ data))) nil) -(defconstant +xset-list-size-limit+ 12) +(defconstant +xset-list-size-limit+ 24) ;;; Checks that the element is not in the set yet. (defun add-to-xset (elt xset) @@ -59,10 +59,10 @@ (size (xset-list-size xset))) (if (listp data) (if (< size +xset-list-size-limit+) - (unless (member elt data :test #'eq) + (unless (member elt data :test #'eql) (setf (xset-list-size xset) (1+ size) (xset-data xset) (cons elt data))) - (let ((table (make-hash-table :size (* 2 size) :test #'eq))) + (let ((table (make-hash-table :size (* 2 size) :test #'eql))) (setf (gethash elt table) t) (dolist (x data) (setf (gethash x table) t)) @@ -82,7 +82,7 @@ (defun xset-member-p (elt xset) (let ((data (xset-data xset))) (if (listp data) - (member elt data :test #'eq) + (member elt data :test #'eql) (gethash elt data)))) (defun xset-members (xset) @@ -105,7 +105,7 @@ (let ((data (xset-data lookup))) (map-xset (if (listp data) (lambda (elt) - (when (member elt data :test #'eq) + (when (member elt data :test #'eql) (add-to-xset elt intersection))) (lambda (elt) (when (gethash elt data) @@ -119,7 +119,7 @@ (map-xset (if (listp data) (lambda (elt) - (unless (member elt data :test #'eq) + (unless (member elt data :test #'eql) (return-from xset-subset-p nil))) (lambda (elt) (unless (gethash elt data)