Adding null? word to test if a set is empty
parent
1ae8cdc587
commit
265fe6208f
|
@ -11,6 +11,9 @@ IN: bit-sets.tests
|
||||||
T{ bit-set f ?{ f f t f t f } } intersect
|
T{ bit-set f ?{ f f t f t f } } intersect
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
[ f ] [ T{ bit-set f ?{ t f f f t f } } null? ] unit-test
|
||||||
|
[ t ] [ T{ bit-set f ?{ f f f f f f } } null? ] unit-test
|
||||||
|
|
||||||
[ T{ bit-set f ?{ t f t f f f } } ] [
|
[ T{ bit-set f ?{ t f t f f f } } ] [
|
||||||
T{ bit-set f ?{ t t t f f f } }
|
T{ bit-set f ?{ t t t f f f } }
|
||||||
T{ bit-set f ?{ f t f f t t } } diff
|
T{ bit-set f ?{ f t f f t t } } diff
|
||||||
|
|
|
@ -31,3 +31,6 @@ IN: hash-sets.tests
|
||||||
[ f ] [ HS{ 1 2 3 } HS{ 2 3 } set= ] unit-test
|
[ f ] [ HS{ 1 2 3 } HS{ 2 3 } set= ] unit-test
|
||||||
|
|
||||||
[ HS{ 1 2 } HS{ 1 2 3 } ] [ HS{ 1 2 } clone dup clone [ 3 swap adjoin ] keep ] unit-test
|
[ HS{ 1 2 } HS{ 1 2 3 } ] [ HS{ 1 2 } clone dup clone [ 3 swap adjoin ] keep ] unit-test
|
||||||
|
|
||||||
|
[ t ] [ HS{ } null? ] unit-test
|
||||||
|
[ f ] [ HS{ 1 } null? ] unit-test
|
||||||
|
|
|
@ -18,6 +18,7 @@ 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 drop dup hash-set? [ members <hash-set> ] unless ;
|
M: hash-set set-like 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: hash-set null? table>> assoc-empty? ;
|
||||||
|
|
||||||
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 ;
|
||||||
|
|
|
@ -61,3 +61,6 @@ IN: sets.tests
|
||||||
[ f ] [ HS{ 1 2 3 1 2 1 } duplicates ] unit-test
|
[ f ] [ HS{ 1 2 3 1 2 1 } duplicates ] unit-test
|
||||||
|
|
||||||
[ H{ { 3 HS{ 1 2 } } } ] [ H{ } clone 1 3 pick adjoin-at 2 3 pick adjoin-at ] unit-test
|
[ H{ { 3 HS{ 1 2 } } } ] [ H{ } clone 1 3 pick adjoin-at 2 3 pick adjoin-at ] unit-test
|
||||||
|
|
||||||
|
[ t ] [ f null? ] unit-test
|
||||||
|
[ f ] [ { 4 } null? ] unit-test
|
||||||
|
|
|
@ -21,10 +21,13 @@ GENERIC: subset? ( set1 set2 -- ? )
|
||||||
GENERIC: set= ( set1 set2 -- ? )
|
GENERIC: set= ( set1 set2 -- ? )
|
||||||
GENERIC: duplicates ( set -- seq )
|
GENERIC: duplicates ( set -- seq )
|
||||||
GENERIC: all-unique? ( set -- ? )
|
GENERIC: all-unique? ( set -- ? )
|
||||||
|
GENERIC: null? ( set -- ? )
|
||||||
|
|
||||||
! Defaults for some methods.
|
! Defaults for some methods.
|
||||||
! Override them for efficiency
|
! Override them for efficiency
|
||||||
|
|
||||||
|
M: set null? members null? ; inline
|
||||||
|
|
||||||
M: set set-like drop ; inline
|
M: set set-like drop ; inline
|
||||||
|
|
||||||
M: set union
|
M: set union
|
||||||
|
@ -92,6 +95,9 @@ M: sequence set-like
|
||||||
M: sequence members
|
M: sequence members
|
||||||
[ pruned ] keep like ;
|
[ pruned ] keep like ;
|
||||||
|
|
||||||
|
M: sequence null?
|
||||||
|
empty? ; inline
|
||||||
|
|
||||||
: 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