]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding 2map-sum and 2count.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 3 May 2012 18:31:38 +0000 (11:31 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 3 May 2012 18:31:38 +0000 (11:31 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 1b58c180b73a5c2b4f10c0a29182c605087e33b0..dfee932f388b1c5272b41e754f514cbb50874276 100644 (file)
@@ -67,3 +67,6 @@ IN: sequences.extras.tests
 
 { V{ 0 4 16 36 64 } } [ 10 iota [ even? ] [ sq ] filter-map ] unit-test
 { { 2 6 10 14 18 } } [ 10 iota [ odd? ] [ 2 * ] { } filter-map-as ] unit-test
+
+{ 8 } [ 3 iota dup [ 1 + * ] 2map-sum ] unit-test
+{ 4 } [ "hello" "jello" [ = ] 2count ] unit-test
index db0860104584c4048117d9b9cbbea92b60b33064..8f20fcfc673b2ea03a7afcec76916804a1854468 100644 (file)
@@ -171,3 +171,9 @@ PRIVATE>
 
 : filter-map ( ... seq filter-quot: ( ... elt -- ... ? ) map-quot: ( ... elt -- ... newelt ) -- ... newseq )
     pick filter-map-as ; inline
+
+: 2map-sum ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... n ) -- ... n )
+    [ 0 ] 3dip [ dip + ] curry [ rot ] prepose 2each ; inline
+
+: 2count ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... n )
+    [ 1 0 ? ] compose 2map-sum ; inline