sequences.extras: faster even-indices and odd-indices.

db4
John Benediktsson 2013-03-29 07:10:27 -07:00
parent 577877f0e5
commit a6614ee974
1 changed files with 8 additions and 2 deletions

View File

@ -90,9 +90,15 @@ IN: sequences.extras
: filter-index ( ... seq quot: ( ... elt i -- ... ? ) -- ... seq' ) : filter-index ( ... seq quot: ( ... elt i -- ... ? ) -- ... seq' )
over filter-index-as ; inline over filter-index-as ; inline
: even-indices ( seq -- seq' ) [ nip even? ] filter-index ; : even-indices ( seq -- seq' )
[ length 1 + 2/ ] keep [
[ [ 2 * ] dip nth-unsafe ] curry
] keep map-integers ;
: odd-indices ( seq -- seq' ) [ nip odd? ] filter-index ; : odd-indices ( seq -- seq' )
[ length 2/ ] keep [
[ [ 2 * 1 + ] dip nth-unsafe ] curry
] keep map-integers ;
: compact ( seq quot elt -- seq' ) : compact ( seq quot elt -- seq' )
[ split-when harvest ] dip join ; inline [ split-when harvest ] dip join ; inline