]> gitweb.factorcode.org Git - factor.git/blob - basis/sequences/next/next.factor
b22bf2683c78031486ff306cbe58165b6b21b08d
[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 >r dup length swap r> ; inline
7
8 : (map-next) ( i seq quot -- )
9     ! this uses O(n) more bounds checks than is really necessary
10     >r [ >r 1+ r> ?nth ] 2keep nth-unsafe r> call ; inline
11
12 PRIVATE>
13
14 : each-next ( seq quot -- )
15     ! quot: next-elt elt --
16     iterate-seq [ (map-next) ] 2curry each-integer ; inline
17
18 : map-next ( seq quot -- newseq )
19     ! quot: next-elt elt -- newelt
20     over dup length swap new-sequence >r
21     iterate-seq [ (map-next) ] 2curry
22     r> [ collect ] keep ; inline