factor/basis/sequences/next/next.factor

23 lines
589 B
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
USING: kernel sequences sequences.private math ;
IN: sequences.next
<PRIVATE
2008-02-23 23:48:45 -05:00
: iterate-seq >r dup length swap r> ; inline
2007-09-20 18:09:08 -04:00
: (map-next) ( i seq quot -- )
! this uses O(n) more bounds checks than is really necessary
>r [ >r 1+ r> ?nth ] 2keep nth-unsafe r> call ; inline
PRIVATE>
: each-next ( seq quot -- )
! quot: next-elt elt --
iterate-seq [ (map-next) ] 2curry each-integer ; inline
: map-next ( seq quot -- newseq )
! quot: next-elt elt -- newelt
2008-04-13 13:54:58 -04:00
over dup length swap new-sequence >r
2007-09-20 18:09:08 -04:00
iterate-seq [ (map-next) ] 2curry
r> [ collect ] keep ; inline