Reducing bit-sets performance regression somewhat

db4
Daniel Ehrenberg 2010-03-17 21:38:06 -04:00
parent 67912db5f1
commit fab9a925c3
1 changed files with 14 additions and 2 deletions

View File

@ -30,6 +30,11 @@ M: bit-set delete
! of the same length.
<PRIVATE
ERROR: check-bit-set-failed ;
: check-bit-set ( bit-set -- bit-set )
dup bit-set? [ check-bit-set-failed ] unless ; inline
: bit-set-map ( seq1 seq2 quot -- seq )
[ 2drop length>> ]
[
@ -62,13 +67,20 @@ M: bit-set subset?
M: bit-set members
[ table>> length iota ] keep [ in? ] curry filter ;
M: bit-set set-like
<PRIVATE
: bit-set-like ( set bit-set -- bit-set' )
! This crashes if there are keys that can't be put in the bit set
over bit-set? [ 2dup [ table>> ] bi@ length = ] [ f ] if
over bit-set? [ 2dup [ table>> length ] bi@ = ] [ f ] if
[ drop ] [
[ members ] dip table>> length <bit-set>
[ [ adjoin ] curry each ] keep
] if ;
PRIVATE>
M: bit-set set-like
bit-set-like check-bit-set ; inline
M: bit-set clone
table>> clone bit-set boa ;