sequences.extras: fix evens/odds to not cache length.
parent
fc40ab3fb8
commit
2d13cecc22
|
@ -382,26 +382,32 @@ PRIVATE>
|
||||||
: 2map-index ( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... newelt ) -- ... newseq )
|
: 2map-index ( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... newelt ) -- ... newseq )
|
||||||
pick [ (2each-index) ] dip map-integers ; inline
|
pick [ (2each-index) ] dip map-integers ; inline
|
||||||
|
|
||||||
TUPLE: evens seq length ;
|
TUPLE: evens { seq read-only } ;
|
||||||
|
|
||||||
: <evens> ( seq -- evens )
|
C: <evens> evens
|
||||||
dup length 1 + 2/ evens boa ; inline
|
|
||||||
|
|
||||||
M: evens length length>> ; inline
|
M: evens length seq>> length 1 + 2/ ; inline
|
||||||
|
|
||||||
M: evens nth-unsafe [ 2 * ] [ seq>> nth-unsafe ] bi* ; inline
|
M: evens nth-unsafe [ 2 * ] [ seq>> nth-unsafe ] bi* ; inline
|
||||||
|
|
||||||
|
M: evens like seq>> like ;
|
||||||
|
|
||||||
|
M: evens new-sequence seq>> new-sequence ;
|
||||||
|
|
||||||
INSTANCE: evens immutable-sequence
|
INSTANCE: evens immutable-sequence
|
||||||
|
|
||||||
TUPLE: odds seq length ;
|
TUPLE: odds { seq read-only } ;
|
||||||
|
|
||||||
: <odds> ( seq -- odds )
|
C: <odds> odds
|
||||||
dup length 2/ odds boa ; inline
|
|
||||||
|
|
||||||
M: odds length length>> ; inline
|
M: odds length seq>> length 2/ ; inline
|
||||||
|
|
||||||
M: odds nth-unsafe [ 2 * 1 + ] [ seq>> nth-unsafe ] bi* ; inline
|
M: odds nth-unsafe [ 2 * 1 + ] [ seq>> nth-unsafe ] bi* ; inline
|
||||||
|
|
||||||
|
M: odds like seq>> like ;
|
||||||
|
|
||||||
|
M: odds new-sequence seq>> new-sequence ;
|
||||||
|
|
||||||
INSTANCE: odds immutable-sequence
|
INSTANCE: odds immutable-sequence
|
||||||
|
|
||||||
: until-empty ( seq quot -- )
|
: until-empty ( seq quot -- )
|
||||||
|
|
Loading…
Reference in New Issue