From: Doug Coleman Date: Mon, 8 Aug 2022 22:39:40 +0000 (-0500) Subject: sequences.extras: Add {2,3}nested-each/map combinators X-Git-Tag: 0.99~1158 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=05522be58bfad81a32c30cfde4e190427909d4a2 sequences.extras: Add {2,3}nested-each/map combinators --- 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