sets: fix performance regression in all-unique? word

release
Slava Pestov 2010-04-13 04:43:29 -07:00
parent 81c1e9fcb4
commit 3e91a7f280
2 changed files with 13 additions and 7 deletions

View File

@ -16,13 +16,22 @@ M: hash-set in? table>> key? ; inline
M: hash-set adjoin table>> dupd set-at ; inline M: hash-set adjoin table>> dupd set-at ; inline
M: hash-set delete table>> delete-at ; inline M: hash-set delete table>> delete-at ; inline
M: hash-set members table>> keys ; inline M: hash-set members table>> keys ; inline
M: hash-set set-like M: hash-set set-like drop dup hash-set? [ members <hash-set> ] unless ;
drop dup hash-set? [ members <hash-set> ] unless ; M: hash-set clone table>> clone hash-set boa ;
M: hash-set clone
table>> clone hash-set boa ;
M: sequence fast-set <hash-set> ; M: sequence fast-set <hash-set> ;
M: f fast-set drop H{ } clone hash-set boa ; M: f fast-set drop H{ } clone hash-set boa ;
M: sequence duplicates M: sequence duplicates
f fast-set [ [ in? ] [ adjoin ] 2bi ] curry filter ; f fast-set [ [ in? ] [ adjoin ] 2bi ] curry filter ;
<PRIVATE
: (all-unique?) ( elt hash -- ? )
2dup in? [ 2drop f ] [ adjoin t ] if ; inline
PRIVATE>
M: sequence all-unique?
dup length <hashtable> hash-set boa
[ (all-unique?) ] curry all? ;

View File

@ -92,9 +92,6 @@ M: sequence set-like
M: sequence members M: sequence members
[ pruned ] keep like ; [ pruned ] keep like ;
M: sequence all-unique?
dup pruned sequence= ;
: combine ( sets -- set ) : combine ( sets -- set )
[ f ] [ f ]
[ [ [ members ] map concat ] [ first ] bi set-like ] [ [ [ members ] map concat ] [ first ] bi set-like ]