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 )
|
||||
pick [ (2each-index) ] dip map-integers ; inline
|
||||
|
||||
TUPLE: evens seq length ;
|
||||
TUPLE: evens { seq read-only } ;
|
||||
|
||||
: <evens> ( seq -- evens )
|
||||
dup length 1 + 2/ evens boa ; inline
|
||||
C: <evens> evens
|
||||
|
||||
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 like seq>> like ;
|
||||
|
||||
M: evens new-sequence seq>> new-sequence ;
|
||||
|
||||
INSTANCE: evens immutable-sequence
|
||||
|
||||
TUPLE: odds seq length ;
|
||||
TUPLE: odds { seq read-only } ;
|
||||
|
||||
: <odds> ( seq -- odds )
|
||||
dup length 2/ odds boa ; inline
|
||||
C: <odds> odds
|
||||
|
||||
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 like seq>> like ;
|
||||
|
||||
M: odds new-sequence seq>> new-sequence ;
|
||||
|
||||
INSTANCE: odds immutable-sequence
|
||||
|
||||
: until-empty ( seq quot -- )
|
||||
|
|
Loading…
Reference in New Issue