! Copyright (C) 2013 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: tools.test sets.extras ;
+USING: math sequences sets.extras tools.test ;
IN: sets.extras.tests
{ { } } [ { } { } setwise-xor ] unit-test
{ "abc" } [ "abc" non-repeating ] unit-test
{ "abc" } [ "abcddd" non-repeating ] unit-test
{ "" } [ "aabbcc" non-repeating ] unit-test
+
+{ HS{ 0 10 20 30 40 } } [ 5 iota [ 10 * ] mapped-set ] unit-test
! Copyright (C) 2013 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs kernel locals sequences sequences.extras sets ;
+USING: assocs hash-sets kernel locals sequences
+sequences.extras sets ;
IN: sets.extras
: setwise-xor ( seq1 seq2 -- set )
: adjoin-at* ( value key assoc -- set )
[ [ HS{ } clone ] unless* [ adjoin ] keep dup ] change-at ;
+
+: mapped-set ( ... seq quot: ( ... elt -- ... newelt ) -- ... set )
+ over length <hash-set> [
+ [ adjoin ] curry compose each
+ ] keep ; inline