From 75276855aeb99b5c580d8d69dcef6f04542ba17b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 14 Jun 2009 18:22:31 -0500 Subject: [PATCH] sequences: change implementation of interleave --- core/sequences/sequences.factor | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 745fe2a033..c58304de44 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -508,9 +508,11 @@ PRIVATE> (each-index) each-integer ; inline : interleave ( seq between quot -- ) - swap [ drop ] [ [ 2dip call ] 2curry ] 2bi - [ [ 0 = ] 2dip if ] 2curry - each-index ; inline + pick empty? [ 3drop ] [ + [ [ drop first-unsafe ] dip call ] + [ [ rest-slice ] 2dip [ [ call ] bi@ ] 2curry each ] + 3bi + ] if ; inline : map-index ( seq quot -- newseq ) [ dup length iota ] dip 2map ; inline