From: John Benediktsson Date: Wed, 25 Oct 2017 00:25:26 +0000 (-0700) Subject: sequences.extras: adding 3each-from and 3map-reduce. X-Git-Tag: 0.98~631 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=8d58f60bf92dd4d3cd1cb4a85dbf8ff79c753112 sequences.extras: adding 3each-from and 3map-reduce. --- diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index d8e23af43e..c6943aa0f6 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -293,6 +293,14 @@ PRIVATE> : 2count ( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... n ) [ 1 0 ? ] compose 2map-sum ; inline +: 3each-from + ( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... ) i -- ... ) + [ (3each) ] dip -rot (each-integer) ; inline + +: 3map-reduce + ( ..a seq1 seq2 seq3 map-quot: ( ..a elt1 elt2 elt3 -- ..b intermediate ) reduce-quot: ( ..b prev intermediate -- ..a next ) -- ..a result ) + [ [ [ [ first ] tri@ ] 3keep ] dip [ 3dip ] keep ] dip compose 1 3each-from ; inline + : round-robin ( seq -- newseq ) [ { } ] [ [ longest length ] keep