sequences: More direct implementation of map-as and new-like*

modern-harvey3
Doug Coleman 2019-11-03 20:10:17 -06:00
parent e83100b759
commit 107f435779
1 changed files with 9 additions and 1 deletions

View File

@ -18,6 +18,9 @@ GENERIC: clone-like ( seq exemplar -- newseq ) flushable
: new-like ( len exemplar quot -- seq )
over [ [ new-sequence ] dip call ] dip like ; inline
: new-like* ( len exemplar quot -- seq )
over [ [ new-sequence ] dip [ call ] keepd ] dip like ; inline
M: sequence like drop ; inline
GENERIC: lengthen ( n seq -- )
@ -473,7 +476,12 @@ PRIVATE>
overd [ [ collect ] keep ] new-like ; inline
: map-as ( ... seq quot: ( ... elt -- ... newelt ) exemplar -- ... newseq )
[ (each) ] dip map-integers ; inline
[ [ length ensure-integer ] keep ] 2dip
pickd [
[ [ nth-unsafe ] curry ]
[ compose [ keep ] curry ]
[ [ set-nth-unsafe ] curry compose ] tri* each-integer
] new-like* ; inline
: map ( ... seq quot: ( ... elt -- ... newelt ) -- ... newseq )
over map-as ; inline