From eb582e4bbdee6160c687e55e8f79fdb050e61f06 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Mon, 23 Sep 2013 17:23:08 -0700 Subject: [PATCH] grouping.extras: adding map-as versions. --- extra/grouping/extras/extras.factor | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/extra/grouping/extras/extras.factor b/extra/grouping/extras/extras.factor index 639545e405..6f1a8ac36c 100644 --- a/extra/grouping/extras/extras.factor +++ b/extra/grouping/extras/extras.factor @@ -3,17 +3,26 @@ sequences sequences.generalizations sequences.private ; IN: grouping.extras -: 2clump-map ( seq quot: ( elt1 elt2 -- newelt ) -- seq' ) - [ dup 1 short tail-slice ] dip { } 2map-as ; inline +: 2clump-map-as ( seq quot: ( elt1 elt2 -- newelt ) exemplar -- seq' ) + [ dup 1 short tail-slice ] 2dip 2map-as ; inline -: 3clump-map ( seq quot: ( elt1 elt2 elt3 -- newelt ) -- seq' ) +: 2clump-map ( seq quot: ( elt1 elt2 -- newelt ) -- seq' ) + { } 2clump-map-as ; inline + +: 3clump-map-as ( seq quot: ( elt1 elt2 elt3 -- newelt ) exemplar -- seq' ) [ dup [ 1 short tail-slice ] [ 2 short tail-slice ] bi - ] dip { } 3map-as ; inline + ] 2dip 3map-as ; inline -MACRO: nclump-map ( seq quot n -- result ) - [ [1,b) [ [ short tail-slice ] curry ] map swap ] keep - '[ _ dup _ cleave _ { } _ nmap-as ] ; +: 3clump-map ( seq quot: ( elt1 elt2 elt3 -- newelt ) -- seq' ) + { } 3clump-map-as ; inline + +MACRO: nclump-map-as ( seq quot exemplar n -- result ) + [ nip [1,b) [ [ short tail-slice ] curry ] map swap ] 2keep + '[ _ dup _ cleave _ _ _ nmap-as ] ; + +: nclump-map ( seq quot n -- result ) + { } swap nclump-map-as ; inline TUPLE: head-clumps seq ; C: head-clumps