]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding map-find-index.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 25 Mar 2013 02:12:09 +0000 (19:12 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 25 Mar 2013 02:12:09 +0000 (19:12 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index eeaa3e00eb78bccca2f620e7ed705b081175939c..199e56d090ec5f71594826a016816d3180fa2ccc 100644 (file)
@@ -146,3 +146,6 @@ IN: sequences.extras.tests
 { V{ 1 } } [ 1 flatten1 ] unit-test
 { { 1 2 3 } } [ { 1 2 3 } flatten1 ] unit-test
 { { 1 2 3 { { 4 } } } } [ { 1 { 2 } { 3 { { 4 } } } } flatten1 ] unit-test
+
+{ t 3 3 } [ 10 iota [ [ odd? ] [ 1 > ] bi* and ] map-find-index ] unit-test
+{ f f f } [ 10 iota [ [ odd? ] [ 9 > ] bi* and ] map-find-index ] unit-test
index 60d8b438636ed089bef6c03d4fb7ece2fcaac6cf..aa2e169f8237fd79e6e9b40f416c0eddc7bd2bf8 100644 (file)
@@ -365,3 +365,10 @@ PRIVATE>
             ] [ , ] if
         ]
     ] keep dup branch? [ drop f ] unless make ;
+
+: (map-find-index) ( seq quot find-quot -- result elt index )
+    [ [ f ] 2dip [ [ nip ] 2dip call dup ] curry ] dip call
+    [ [ [ drop f ] unless ] keep ] dip ; inline
+
+: map-find-index ( ... seq quot: ( ... elt index -- ... result/f ) -- ... result elt index )
+    [ find-index ] (map-find-index) ; inline