]> gitweb.factorcode.org Git - factor.git/commitdiff
sets.extras: Initial checkin. Add setwise-xor word like setxor1d in numpy.
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 6 Mar 2013 17:59:37 +0000 (09:59 -0800)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 6 Mar 2013 18:00:13 +0000 (10:00 -0800)
extra/sets/extras/authors.txt [new file with mode: 0644]
extra/sets/extras/extras-docs.factor [new file with mode: 0644]
extra/sets/extras/extras-tests.factor [new file with mode: 0644]
extra/sets/extras/extras.factor [new file with mode: 0644]

diff --git a/extra/sets/extras/authors.txt b/extra/sets/extras/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/extra/sets/extras/extras-docs.factor b/extra/sets/extras/extras-docs.factor
new file mode 100644 (file)
index 0000000..cfde056
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: help.markup help.syntax kernel sequences sets ;
+IN: sets.extras
+
+HELP: setwise-xor
+{ $values
+    { "seq0" sequence } { "seq1" sequence }
+    { "set" set }
+}
+{ $description "Converts the sequences to sets and takes the element-wise " { $link xor } ". Outputs elements that are in either set but not in both." }
+{ $example
+    "USING: sets.extras prettyprint ;"
+    "{ 1 2 3 } { 2 3 4 } setwise-xor ."
+    "{ 1 4 }"
+}
+{ $notes "Known as setxor1d in numpy." } ;
+
+ARTICLE: "sets.extras" "Extra sets words"
+"The " { $vocab-link "sets.extras" } " vocabulary is a collection of words related to sets."
+$nl
+"To take the element-wise xor of two sequences as if they were sets:"
+{ $subsections setwise-xor } ;
+
+ABOUT: "sets.extras"
diff --git a/extra/sets/extras/extras-tests.factor b/extra/sets/extras/extras-tests.factor
new file mode 100644 (file)
index 0000000..858945f
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: tools.test sets.extras ;
+IN: sets.extras.tests
+
+{ { } }
+[ { } { } setwise-xor ] unit-test
+
+{ { 1 } }
+[ { 1 } { } setwise-xor ] unit-test
+
+{ { 1 } }
+[ { } { 1 } setwise-xor ] unit-test
+
+{ { } }
+[ { 1 } { 1 } setwise-xor ] unit-test
+
+{ { 1 4 5 7 } }
+[ { 1 2 3 2 4 } { 2 3 5 7 5 } setwise-xor ] unit-test
diff --git a/extra/sets/extras/extras.factor b/extra/sets/extras/extras.factor
new file mode 100644 (file)
index 0000000..7b98c65
--- /dev/null
@@ -0,0 +1,7 @@
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel sequences sets ;
+IN: sets.extras
+
+: setwise-xor ( seq0 seq1 -- set )
+    [ append members ] [ intersect ] 2bi diff ;