sets.extras: adding duplicates-by.

char-rename
John Benediktsson 2016-11-18 06:59:07 -08:00
parent 26d27ef61f
commit fd5aa1d4f2
2 changed files with 7 additions and 2 deletions

View File

@ -24,3 +24,5 @@ IN: sets.extras.tests
{ "" } [ "aabbcc" non-repeating ] unit-test
{ HS{ 0 10 20 30 40 } } [ 5 iota [ 10 * ] mapped-set ] unit-test
{ { 1 2 4 } } [ { 1 2 3 4 5 } [ 2/ ] duplicates-by ] unit-test

View File

@ -1,6 +1,6 @@
! Copyright (C) 2013 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs hash-sets kernel locals sequences
USING: assocs fry hash-sets kernel locals sequences
sequences.extras sets ;
IN: sets.extras
@ -32,5 +32,8 @@ IN: sets.extras
: mapped-set ( ... seq quot: ( ... elt -- ... newelt ) -- ... set )
over length <hash-set> [
[ adjoin ] curry compose each
'[ @ _ adjoin ] each
] keep ; inline
: duplicates-by ( seq quot: ( elt -- key ) -- seq' )
over length <hash-set> '[ @ _ ?adjoin ] filter ; inline