! 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 )
[ drop 2length [ assert= ] keep ]
[ [ [ underlying>> ] bi@ ] dip 2map ] 3bi
M: bit-set members
table>> [ length <iota> ] keep '[ _ nth-unsafe ] filter ;
-<PRIVATE
-
-: bit-set-like ( set bit-set -- bit-set' )
+M: bit-set set-like
! Throws an error if there are keys that can't be put
! in the bit set
over bit-set? [ 2dup [ table>> length ] same? ] [ f ] if
[ drop ] [
[ members ] dip table>> length <bit-set>
[ adjoin-all ] keep
- ] if ;
-
-PRIVATE>
-
-M: bit-set set-like
- bit-set-like check-bit-set ; inline
+ ] if ; inline
M: bit-set clone
table>> clone bit-set boa ;
{ { 1 2 3 } } [ HS{ 1 2 3 } { } set-like sort ] unit-test
{ { 1 2 3 } } [ { 1 2 2 3 3 } { } set-like ] unit-test
{ { 3 2 1 } } [ { 3 3 2 2 1 } { } set-like ] unit-test
-{ t } [ 4 <bit-set> 1 <bit-set> set-like 4 <bit-set> = ] unit-test
+{ t } [ 4 <bit-set> 1 <bit-set> set-like 1 <bit-set> = ] unit-test
{ t } [ { 1 2 3 } HS{ } set-like HS{ 1 2 3 } = ] unit-test
{ HS{ 1 2 3 } } [ { 1 2 3 } fast-set ] unit-test