sequences.extras: fix evens/odds to not cache length.

windows-high-dpi
John Benediktsson 2018-02-16 08:25:57 -08:00
parent fc40ab3fb8
commit 2d13cecc22
1 changed files with 14 additions and 8 deletions

View File

@ -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 -- )