]> gitweb.factorcode.org Git - factor.git/commitdiff
grouping.extras: adding map-as versions.
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 24 Sep 2013 00:23:08 +0000 (17:23 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 24 Sep 2013 00:23:08 +0000 (17:23 -0700)
extra/grouping/extras/extras.factor

index 639545e4055b29336e814a286c665cf313187c68..6f1a8ac36c032a5659950d57127c2983c8d413b5 100644 (file)
@@ -3,17 +3,26 @@ sequences sequences.generalizations sequences.private ;
 
 IN: grouping.extras
 
+: 2clump-map-as ( seq quot: ( elt1 elt2 -- newelt ) exemplar -- seq' )
+    [ dup 1 short tail-slice ] 2dip 2map-as ; inline
+
 : 2clump-map ( seq quot: ( elt1 elt2 -- newelt ) -- seq' )
-    [ dup 1 short tail-slice ] dip { } 2map-as ; inline
+    { } 2clump-map-as ; inline
 
-: 3clump-map ( seq quot: ( elt1 elt2 elt3 -- newelt ) -- seq' )
+: 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
+
+: 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 ] ;
 
-MACRO: nclump-map ( seq quot n -- result )
-    [ [1,b) [ [ short tail-slice ] curry ] map swap ] keep
-    '[ _ dup _ cleave _ { } _ nmap-as ] ;
+: nclump-map ( seq quot n -- result )
+    { } swap nclump-map-as ; inline
 
 TUPLE: head-clumps seq ;
 C: <head-clumps> head-clumps