From fdea9b09f2aab1553dcafc9f41f81e4eb04f19ce Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Thu, 22 Oct 2009 14:35:27 -0500 Subject: [PATCH] change produce-as so it uses an intermediate vector of a type appropriate to the destination type --- core/sequences/sequences.factor | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index c64095cb73..6e7d8984b2 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -498,11 +498,14 @@ PRIVATE> : partition ( seq quot -- trueseq falseseq ) over [ 2pusher [ each ] 2dip ] dip [ like ] curry bi@ ; inline +: accumulator-for ( quot exemplar -- quot' vec ) + [ length ] keep new-resizable [ [ push ] curry compose ] keep ; inline + : accumulator ( quot -- quot' vec ) - V{ } clone [ [ push ] curry compose ] keep ; inline + V{ } accumulator-for ; inline : produce-as ( pred quot exemplar -- seq ) - [ accumulator [ while ] dip ] dip like ; inline + dup '[ _ accumulator-for [ while ] dip ] dip like ; inline : produce ( pred quot -- seq ) { } produce-as ; inline