X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=extra%2Fsequences%2Fextras%2Fextras.factor;h=24561f91460863cbd2daa829e5fb54385b1e0588;hp=0d37e3e14d118f96a3c9de09c4258144c6c767b2;hb=05522be58bfad81a32c30cfde4e190427909d4a2;hpb=6116839ccc4274639ed15ca9b8711e8549411c92 diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 0d37e3e14d..24561f9146 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -774,3 +774,29 @@ M: step-slice length zero? [ 1 + ] unless ; inline INSTANCE: step-slice virtual-sequence + +: 2nested-each ( seq1 seq2 quot -- ) + swapd '[ + swap _ with each + ] with each ; inline + +: 3nested-each ( seq1 seq2 seq3 quot -- ) + [ spin ] dip '[ + -rot [ + swap _ with with each + ] with with each + ] with with each ; inline + +: 2nested-map ( seq1 seq2 quot -- seq ) + 2over [ length ] bi@ * reach + [ + new-resizable + [ [ push ] curry compose 2nested-each ] keep + ] keep like ; inline + +: 3nested-map ( seq1 seq2 seq3 quot -- seq ) + 3 nover [ length ] tri@ * * 5 npick + [ + new-resizable + [ [ push ] curry compose 3nested-each ] keep + ] keep like ; inline