23 lines
589 B
Factor
Executable File
23 lines
589 B
Factor
Executable File
USING: kernel sequences sequences.private math ;
|
|
IN: sequences.next
|
|
|
|
<PRIVATE
|
|
|
|
: iterate-seq >r dup length swap r> ; inline
|
|
|
|
: (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
|
|
over dup length swap new-sequence >r
|
|
iterate-seq [ (map-next) ] 2curry
|
|
r> [ collect ] keep ; inline
|