]> gitweb.factorcode.org Git - factor.git/commitdiff
sets: minor improvements to sequence-as-sets.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 24 Aug 2012 23:36:30 +0000 (16:36 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 24 Aug 2012 23:37:01 +0000 (16:37 -0700)
core/hash-sets/hash-sets.factor
core/sets/sets.factor

index c009593c58e1f00e20905c0f5c879c1a49505ecf..aa35a17ab0a21eec4badfee762a8241814099dbc 100644 (file)
@@ -19,19 +19,19 @@ M: hash-set in? table>> key? ; inline
 M: hash-set adjoin table>> dupd set-at ; inline
 M: hash-set delete table>> delete-at ; 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 null? table>> assoc-empty? ;
 M: hash-set cardinality table>> assoc-size ;
 M: hash-set intersect small/large sequence/tester filter >hash-set ;
-M: hash-set union [ members ] bi@ append >hash-set ;
+M: hash-set union (union) >hash-set ;
 M: hash-set diff sequence/tester [ not ] compose filter >hash-set ;
 
 M: sequence fast-set >hash-set ;
 M: f fast-set drop H{ } clone hash-set boa ;
 
 M: sequence duplicates
-    f fast-set [ ?adjoin not ] curry filter ;
+    dup length <hash-set> [ ?adjoin not ] curry filter ;
 
 <PRIVATE
 
index 6fdd4d3431a5c89bf026e5a3759b319306a95877..54a286041633fe5ef35a24d3b50b4eac832b2a82 100644 (file)
@@ -34,8 +34,18 @@ M: set cardinality members length ;
 
 M: set set-like drop ; inline
 
+<PRIVATE
+
+: ?members ( set -- seq )
+    dup sequence? [ members ] unless ; inline
+
+: (union) ( set1 set2 -- seq )
+    [ ?members ] bi@ append ; inline
+
+PRIVATE>
+
 M: set union
-    [ [ members ] bi@ append ] keep set-like ;
+    [ (union) ] keep set-like ;
 
 <PRIVATE
 
@@ -113,11 +123,11 @@ M: sequence null?
     empty? ; inline
 
 M: sequence cardinality
-    pruned length ;
+    fast-set cardinality ;
 
 : combine ( sets -- set/f )
     [ f ]
-    [ [ [ members ] map concat ] [ first ] bi set-like ]
+    [ [ [ ?members ] map concat ] [ first ] bi set-like ]
     if-empty ;
 
 : gather ( ... seq quot: ( ... elt -- ... elt' ) -- ... newseq )