diff --git a/extra/grouping/extras/extras-tests.factor b/extra/grouping/extras/extras-tests.factor index dc719e27b1..76ef71f627 100644 --- a/extra/grouping/extras/extras-tests.factor +++ b/extra/grouping/extras/extras-tests.factor @@ -18,3 +18,6 @@ IN: grouping.extras { { "tail" "ail" "il" "l" } } [ "tail" tail-clump ] unit-test { { "h" "he" "hea" "head" } } [ "head" head-clump ] unit-test + +{ { B{ 97 115 } B{ 100 102 } } } [ "asdf" 2 B{ } group-as ] unit-test +{ { { 97 115 } { 115 100 } { 100 102 } } } [ "asdf" 2 { } clump-as ] unit-test diff --git a/extra/grouping/extras/extras.factor b/extra/grouping/extras/extras.factor index 6f1a8ac36c..b48806528c 100644 --- a/extra/grouping/extras/extras.factor +++ b/extra/grouping/extras/extras.factor @@ -1,5 +1,6 @@ -USING: accessors combinators fry kernel macros math math.ranges -sequences sequences.generalizations sequences.private ; +USING: accessors combinators fry grouping kernel macros math +math.ranges sequences sequences.generalizations +sequences.private ; IN: grouping.extras @@ -41,3 +42,9 @@ INSTANCE: tail-clumps immutable-sequence : tail-clump ( seq -- array ) [ ] [ [ like ] curry map ] bi ; + +: clump-as ( seq n exemplar -- array ) + [ ] dip [ like ] curry map ; + +: group-as ( seq n exemplar -- array ) + [ ] dip [ like ] curry map ;