From cda2e4d7daf5906166bb5d8d0d009506cf152462 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 19 Sep 2012 14:58:55 -0700 Subject: [PATCH] combinators.smart: Add cleave>sequence. --- basis/combinators/smart/smart-tests.factor | 5 +++++ basis/combinators/smart/smart.factor | 3 +++ 2 files changed, 8 insertions(+) diff --git a/basis/combinators/smart/smart-tests.factor b/basis/combinators/smart/smart-tests.factor index fbe7715eb7..4b47094c2d 100644 --- a/basis/combinators/smart/smart-tests.factor +++ b/basis/combinators/smart/smart-tests.factor @@ -90,3 +90,8 @@ IN: combinators.smart.tests { 1 1 1 } [ 1 3 [ ] smart-with times ] unit-test { "BCD" } [ 1 "ABC" [ + ] smart-with map ] unit-test { H{ { 1 2 } } } [ 1 H{ { 1 2 } { 3 4 } } [ drop = ] smart-with assoc-filter ] unit-test + +: test-cleave>sequence ( obj -- seq ) { [ 1 + ] [ sq ] [ 1 - ] } V{ } cleave>sequence ; +\ test-cleave>sequence def>> must-infer + +{ V{ 34 1089 32 } } [ 33 test-cleave>sequence ] unit-test diff --git a/basis/combinators/smart/smart.factor b/basis/combinators/smart/smart.factor index 81528c1823..5b37606dc9 100644 --- a/basis/combinators/smart/smart.factor +++ b/basis/combinators/smart/smart.factor @@ -70,6 +70,9 @@ M: object infer-known* drop f ; : cleave>array ( x seq -- array ) '[ _ cleave ] output>array ; inline +: cleave>sequence ( x seq exemplar -- array ) + [ '[ _ cleave ] ] dip output>sequence ; inline + : input