]> gitweb.factorcode.org Git - factor.git/blob - basis/sequences/next/next.factor
Merge branch 'master' into experimental (untested!)
[factor.git] / basis / sequences / next / next.factor
1 USING: kernel sequences sequences.private math ;
2 IN: sequences.next
3
4 <PRIVATE
5
6 : iterate-seq [ dup length swap ] dip ; inline
7
8 : (map-next) ( i seq quot -- )
9     ! this uses O(n) more bounds checks than is really necessary
10     [ [ [ 1+ ] dip ?nth ] 2keep nth-unsafe ] dip call ; inline
11
12 PRIVATE>
13
14 : each-next ( seq quot: ( next-elt elt -- ) -- )
15     iterate-seq [ (map-next) ] 2curry each-integer ; inline
16
17 : map-next ( seq quot: ( next-elt elt -- newelt ) -- newseq )
18     over dup length swap new-sequence [
19         iterate-seq [ (map-next) ] 2curry
20     ] dip [ collect ] keep ; inline