]> gitweb.factorcode.org Git - factor.git/commitdiff
sets: fix cardinality of sequences, and speed up subset?.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sun, 28 Aug 2011 03:20:56 +0000 (20:20 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 28 Aug 2011 03:20:56 +0000 (20:20 -0700)
core/sets/sets.factor

index 8a84cc597b215dae57825a542cdc0a74dd8bfdc8..0f50a862af585a3f93adefc241513a411dbcbb7e 100644 (file)
@@ -60,11 +60,18 @@ M: set diff
 M: set intersects?
     small/large sequence/tester any? ;
 
+<PRIVATE
+
+: (subset?) ( set1 set2 -- ? )
+    sequence/tester all? ; inline
+
+PRIVATE>
+
 M: set subset?
-    sequence/tester all? ;
+    2dup [ cardinality ] bi@ > [ 2drop f ] [ (subset?) ] if ;
 
 M: set set=
-    2dup [ cardinality ] bi@ eq? [ subset? ] [ 2drop f ] if ;
+    2dup [ cardinality ] bi@ eq? [ (subset?) ] [ 2drop f ] if ;
 
 M: set fast-set ;
 
@@ -107,7 +114,7 @@ M: sequence null?
     empty? ; inline
 
 M: sequence cardinality
-    length ;
+    pruned length ;
 
 : combine ( sets -- set )
     [ f ]