combinators.smart: Add smart combinator that outputs a seq and (length-n) more elements.

db4
Doug Coleman 2015-08-06 03:20:10 -05:00
parent 8ef926989b
commit 33d96f7623
2 changed files with 11 additions and 0 deletions

View File

@ -123,3 +123,7 @@ IN: combinators.smart.tests
{ [ + ] [ + ] }
} smart-2map-reduce
] unit-test
{ { 1 2 3 4 } 5 6 } [ [ 1 2 3 4 5 6 ] 2 output>array-n ] unit-test
{ { } 5 6 } [ [ 5 6 ] 2 output>array-n ] unit-test
{ { 1 2 } 3 4 5 6 } [ [ 1 2 3 4 5 6 ] 4 output>array-n ] unit-test

View File

@ -67,6 +67,13 @@ M: object infer-known* drop f ;
: output>array ( quot -- array )
{ } output>sequence ; inline
MACRO: output>sequence-n ( quot exemplar n -- quot )
3dup nip [ outputs ] dip - -rot
'[ @ [ _ _ nsequence ] _ ndip ] ;
MACRO: output>array-n ( quot n -- array )
'[ _ { } _ output>sequence-n ] ;
: cleave>array ( obj quots -- array )
'[ _ cleave ] output>array ; inline