sequences.extras: Experimenting with collapse, compact words. Add even/odd-indices words.
parent
9e9d830ec0
commit
161cd8222c
|
@ -1,4 +1,4 @@
|
|||
USING: kernel make math sequences sequences.extras tools.test ;
|
||||
USING: ascii kernel make math sequences sequences.extras tools.test ;
|
||||
|
||||
IN: sequences.extras.tests
|
||||
|
||||
|
@ -33,3 +33,15 @@ IN: sequences.extras.tests
|
|||
] unit-test
|
||||
|
||||
[ { 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] filter-index ] unit-test
|
||||
|
||||
[ V{ 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] V{ } filter-index-as ] unit-test
|
||||
|
||||
[ { 1 3 5 } ] [ { 1 2 3 4 5 6 } even-indices ] unit-test
|
||||
|
||||
[ { 2 4 6 } ] [ { 1 2 3 4 5 6 } odd-indices ] unit-test
|
||||
|
||||
{ "a b c d e" }
|
||||
[ "a b \t \n \r c d \n e " [ blank? ] " " compact ] unit-test
|
||||
|
||||
{ " a b c d e " }
|
||||
[ " a b c d e " [ blank? ] " " collapse ] unit-test
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
USING: arrays grouping kernel locals math math.order math.ranges
|
||||
sequences ;
|
||||
sequences splitting ;
|
||||
|
||||
IN: sequences.extras
|
||||
|
||||
|
@ -81,3 +81,17 @@ IN: sequences.extras
|
|||
|
||||
: filter-index ( ... seq quot: ( ... elt i -- ... ? ) -- ... seq' )
|
||||
over filter-index-as ; inline
|
||||
|
||||
: even-indices ( seq -- seq' ) [ nip even? ] filter-index ;
|
||||
|
||||
: odd-indices ( seq -- seq' ) [ nip odd? ] filter-index ;
|
||||
|
||||
: compact ( seq quot elt -- seq' )
|
||||
[ split-when harvest ] dip join ; inline
|
||||
|
||||
: collapse ( seq quot elt -- seq' )
|
||||
[ split-when ] dip
|
||||
[ [ harvest ] dip join ]
|
||||
[ [ first empty? ] dip [ prepend ] curry when ]
|
||||
[ [ last empty? ] dip [ append ] curry when ]
|
||||
2tri ; inline
|
||||
|
|
Loading…
Reference in New Issue