From 107f43577977eb5172d33446b9b2e6972ff5cfb3 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 3 Nov 2019 20:10:17 -0600 Subject: [PATCH] sequences: More direct implementation of map-as and new-like* --- core/sequences/sequences.factor | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index bc729bb10e..fffd65301a 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -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