From 05522be58bfad81a32c30cfde4e190427909d4a2 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 8 Aug 2022 17:39:40 -0500 Subject: [PATCH] sequences.extras: Add {2,3}nested-each/map combinators --- extra/sequences/extras/extras.factor | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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 -- 2.34.1