interleave: allow the 'between' quot to access the stack

db4
Slava Pestov 2009-06-15 16:07:39 -05:00
parent 29327a787c
commit 92b436d7fb
3 changed files with 10 additions and 3 deletions

View File

@ -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 ;

View File

@ -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

View File

@ -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