sequences.extras: adding map-find-index.

db4
John Benediktsson 2013-03-24 19:12:09 -07:00
parent b412cab5c7
commit 6c0bb0f343
2 changed files with 10 additions and 0 deletions

View File

@ -146,3 +146,6 @@ IN: sequences.extras.tests
{ V{ 1 } } [ 1 flatten1 ] unit-test { V{ 1 } } [ 1 flatten1 ] unit-test
{ { 1 2 3 } } [ { 1 2 3 } flatten1 ] unit-test { { 1 2 3 } } [ { 1 2 3 } flatten1 ] unit-test
{ { 1 2 3 { { 4 } } } } [ { 1 { 2 } { 3 { { 4 } } } } 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

View File

@ -365,3 +365,10 @@ PRIVATE>
] [ , ] if ] [ , ] if
] ]
] keep dup branch? [ drop f ] unless make ; ] 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