From 73ba7221af3e805ced4c05238a5e2b35ad3ee3b4 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Sat, 23 Feb 2008 15:51:10 -0600 Subject: [PATCH] combinators.cleave: add general cleave macro --- extra/combinators/cleave/cleave.factor | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/extra/combinators/cleave/cleave.factor b/extra/combinators/cleave/cleave.factor index ba49fac431..44555f7b1e 100644 --- a/extra/combinators/cleave/cleave.factor +++ b/extra/combinators/cleave/cleave.factor @@ -1,5 +1,5 @@ -USING: kernel ; +USING: kernel sequences macros ; IN: combinators.cleave @@ -19,6 +19,22 @@ IN: combinators.cleave : 2bi ( obj obj quot quot -- val val ) >r 2keep r> call ; inline +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +! General cleave + +MACRO: cleave ( seq -- ) + dup + [ drop [ dup ] ] map concat + swap + dup + [ drop [ >r ] ] map concat + swap + [ [ r> ] append ] map concat + 3append + [ drop ] + append ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The spread family ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -35,8 +51,6 @@ IN: combinators.cleave ! General spread -USING: sequences macros ; - MACRO: spread ( seq -- ) dup [ drop [ >r ] ] map concat