diff --git a/basis/ui/gadgets/gadgets.factor b/basis/ui/gadgets/gadgets.factor index 6a289ec1d6..0295012584 100644 --- a/basis/ui/gadgets/gadgets.factor +++ b/basis/ui/gadgets/gadgets.factor @@ -112,8 +112,7 @@ M: gadget gadget-text-separator orientation>> vertical = "\n" "" ? ; : gadget-seq-text ( seq gadget -- ) - gadget-text-separator swap - [ dup % ] [ gadget-text* ] interleave drop ; + gadget-text-separator '[ _ % ] [ gadget-text* ] interleave ; M: gadget gadget-text* [ children>> ] keep gadget-seq-text ; diff --git a/core/sequences/sequences-tests.factor b/core/sequences/sequences-tests.factor index 85f9d56596..5e0d5597ca 100644 --- a/core/sequences/sequences-tests.factor +++ b/core/sequences/sequences-tests.factor @@ -286,3 +286,8 @@ M: bogus-hashcode hashcode* 2drop 0 >bignum ; [ f f ] [ { 1 2 3 4 5 6 7 8 } [ H{ { 11 "hi" } } at ] map-find ] unit-test + +USE: make + +[ { "a" 1 "b" 1 "c" } ] +[ 1 { "a" "b" "c" } [ [ dup , ] [ , ] interleave drop ] { } make ] unit-test \ No newline at end of file diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index c58304de44..39e6d21c67 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -406,6 +406,9 @@ PRIVATE> [ 2drop f f ] if ; inline +: interleave-step ( elt between quot -- ) + [ dip ] dip call ; inline + PRIVATE> : each ( seq quot -- ) @@ -510,7 +513,7 @@ PRIVATE> : interleave ( seq between quot -- ) pick empty? [ 3drop ] [ [ [ drop first-unsafe ] dip call ] - [ [ rest-slice ] 2dip [ [ call ] bi@ ] 2curry each ] + [ [ rest-slice ] 2dip [ interleave-step ] 2curry each ] 3bi ] if ; inline