sets: fix performance regression in all-unique? word
parent
81c1e9fcb4
commit
3e91a7f280
|
@ -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? ;
|
||||||
|
|
|
@ -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 ]
|
||||||
|
|
Loading…
Reference in New Issue