]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: Make a <zip-index> for issue #745.
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 15 Aug 2022 00:29:05 +0000 (19:29 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 15 Aug 2022 00:29:05 +0000 (19:29 -0500)
Testing out naming conventions.

zip-index is the word name that does it immediately
<zip-index> could create a virtual sequence
virtual-zip-index is the tuple class name to not conflict

extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 23100570db780b35718c39ff7d5eee51456b7212..185ad060df52977eb490a47701259234c79bb716 100644 (file)
@@ -296,3 +296,7 @@ tools.test vectors vocabs ;
 ] unit-test
 
 { { -1 2 -3 4 -5 } } [ { 1 2 3 4 5 } [ odd? ] [ neg ] map-if ] unit-test
+
+{ { { 100 0 } { 200 1 } { 300 2 } { 400 3 } } } [
+    { 100 200 300 400 } <zip-index> >array
+] unit-test
index 24561f91460863cbd2daa829e5fb54385b1e0588..fbe65dc2ee477ef1e8bcbed358451a3d777c3b9c 100644 (file)
@@ -800,3 +800,14 @@ INSTANCE: step-slice virtual-sequence
         new-resizable
         [ [ push ] curry compose 3nested-each ] keep
     ] keep like ; inline
+
+TUPLE: virtual-zip-index seq ;
+
+C: <zip-index> virtual-zip-index
+
+M: virtual-zip-index length seq>> length ; inline
+
+M: virtual-zip-index nth-unsafe
+    over [ seq>> nth-unsafe ] [ 2array ] bi* ; inline
+
+INSTANCE: virtual-zip-index immutable-sequence