sets: adding intersect!.
parent
974863dd44
commit
c60d4a0066
|
@ -27,6 +27,7 @@ ARTICLE: "set-operations" "Operations on sets"
|
||||||
clear-set
|
clear-set
|
||||||
union!
|
union!
|
||||||
diff!
|
diff!
|
||||||
|
intersect!
|
||||||
}
|
}
|
||||||
"To test if a set is the empty set:"
|
"To test if a set is the empty set:"
|
||||||
{ $subsections null? }
|
{ $subsections null? }
|
||||||
|
@ -172,6 +173,11 @@ HELP: diff!
|
||||||
{ $description "Removes all members from " { $snippet "set1" } " contained in " { $snippet "set2" } "." }
|
{ $description "Removes all members from " { $snippet "set1" } " contained in " { $snippet "set2" } "." }
|
||||||
{ $side-effects "set1" } ;
|
{ $side-effects "set1" } ;
|
||||||
|
|
||||||
|
HELP: intersect!
|
||||||
|
{ $values { "set1" set } { "set2" set } }
|
||||||
|
{ $description "Removes all members from " { $snippet "set1" } " not contained in " { $snippet "set2" } "." }
|
||||||
|
{ $side-effects "set1" } ;
|
||||||
|
|
||||||
HELP: intersects?
|
HELP: intersects?
|
||||||
{ $values { "set1" set } { "set2" set } { "?" "a boolean" } }
|
{ $values { "set1" set } { "set2" set } { "?" "a boolean" } }
|
||||||
{ $description "Tests if " { $snippet "set1" } " and " { $snippet "set2" } " have any elements in common." }
|
{ $description "Tests if " { $snippet "set1" } " and " { $snippet "set2" } " have any elements in common." }
|
||||||
|
|
|
@ -140,3 +140,8 @@ M: null-set members drop f ;
|
||||||
[ HS{ 1 } ] [ HS{ 1 2 3 } HS{ 2 3 } diff! ] unit-test
|
[ HS{ 1 } ] [ HS{ 1 2 3 } HS{ 2 3 } diff! ] unit-test
|
||||||
[ HS{ 1 } ] [ HS{ 1 } HS{ 2 3 4 } diff! ] unit-test
|
[ HS{ 1 } ] [ HS{ 1 } HS{ 2 3 4 } diff! ] unit-test
|
||||||
[ HS{ 1 2 3 } ] [ HS{ 1 2 3 } HS{ 4 } diff! ] unit-test
|
[ HS{ 1 2 3 } ] [ HS{ 1 2 3 } HS{ 4 } diff! ] unit-test
|
||||||
|
|
||||||
|
[ HS{ } ] [ HS{ } HS{ } intersect! ] unit-test
|
||||||
|
[ HS{ 2 3 } ] [ HS{ 1 2 3 } HS{ 2 3 } intersect! ] unit-test
|
||||||
|
[ HS{ } ] [ HS{ 1 } HS{ 2 3 4 } intersect! ] unit-test
|
||||||
|
[ HS{ } ] [ HS{ 1 2 3 } HS{ 4 } intersect! ] unit-test
|
||||||
|
|
|
@ -168,6 +168,10 @@ M: sequence clear-set
|
||||||
dupd sequence/tester [ dup ] prepose pick
|
dupd sequence/tester [ dup ] prepose pick
|
||||||
[ delete ] curry [ [ drop ] if ] curry compose each ;
|
[ delete ] curry [ [ drop ] if ] curry compose each ;
|
||||||
|
|
||||||
|
: intersect! ( set1 set2 -- set1 )
|
||||||
|
dupd sequence/tester [ dup ] prepose [ not ] compose pick
|
||||||
|
[ delete ] curry [ [ drop ] if ] curry compose each ;
|
||||||
|
|
||||||
! Temporarily for compatibility
|
! Temporarily for compatibility
|
||||||
|
|
||||||
: unique ( seq -- assoc )
|
: unique ( seq -- assoc )
|
||||||
|
|
Loading…
Reference in New Issue