]> gitweb.factorcode.org Git - factor.git/commitdiff
sets,compiler.cfg.stacks.global: putting the refine word in sets
authorBjörn Lindqvist <bjourne@gmail.com>
Tue, 30 Aug 2016 00:34:37 +0000 (02:34 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Tue, 30 Aug 2016 00:34:37 +0000 (02:34 +0200)
basis/compiler/cfg/stacks/global/global.factor
core/sets/sets-docs.factor
core/sets/sets-tests.factor
core/sets/sets.factor

index 31db43f49e77ad6d1b83286e75f32112ba105e0b..a6d818495902f877c17268c0498e5a16d44185e8 100644 (file)
@@ -3,10 +3,6 @@
 USING: accessors compiler.cfg.dataflow-analysis kernel sequences sets ;
 IN: compiler.cfg.stacks.global
 
-! Should exists somewhere else
-: refine ( sets -- set )
-    [ f ] [ [ ] [ intersect ] map-reduce ] if-empty ;
-
 : transfer-peeked-locs ( set bb -- set' )
     [ replaces>> diff ] [ peeks>> union ] bi ;
 
index 955a56b9da9aaf2108b13930460b2ec13dae475c..beed7fd8a477236b1756b38f3e4a288bdf108864 100644 (file)
@@ -224,3 +224,7 @@ HELP: cardinality
 HELP: combine
 { $values { "sets" { $sequence set } } { "set/f" { $maybe set } } }
 { $description "Outputs the union of a sequence of sets, or " { $link f } " if the sequence is empty." } ;
+
+HELP: refine
+{ $values { "sets" { $sequence set } } { "set/f" { $maybe set } } }
+{ $description "Outputs the intersection of a sequence of sets, or " { $link f } " if the sequence is empty." } ;
index 1a109c1da6f5cc17431dcc1c5f0dd9c4b1f6f80d..0ffd8aff08777cdf276e0c57ec98ea8663b1f9c8 100644 (file)
@@ -100,9 +100,15 @@ IN: sets.tests
 { { 1 } } [ { 1 2 3 } { 2 3 4 } without ] unit-test
 { { 1 1 } } [ { 1 1 2 3 3 } { 2 3 4 4 } without ] unit-test
 
+! combine
 { { 1 2 3 } } [ { { 1 } { 2 } { 1 3 } } combine ] unit-test
 { f } [ { } combine ] unit-test
 
+! refine
+{ { 2 } } [
+    { { 2 3 } { 2 4 } { 9 8 4 2 } } refine
+] unit-test
+
 { { 1 4 9 16 25 36 } }
 [ { { 1 2 3 } { 4 5 6 } } [ [ sq ] map ] gather ] unit-test
 
index ab98c578ee846b0fdbe5997931996e52b0565d38..4a78d39865dd355b5dfbbb524520df9f7412640a 100644 (file)
@@ -149,6 +149,9 @@ M: sequence clear-set
 : intersection ( sets -- set/f )
     [ f ] [ [ ] [ intersect ] map-reduce ] if-empty ;
 
+: refine ( sets -- set/f )
+    [ f ] [ [ ] [ intersect ] map-reduce ] if-empty ;
+
 : gather ( ... seq quot: ( ... elt -- ... elt' ) -- ... newseq )
     map concat members ; inline