From 139bef21427babd2d165e1b9d627efbec6f2f14e Mon Sep 17 00:00:00 2001 From: Grazfather Date: Fri, 3 Dec 2021 16:11:20 -0500 Subject: [PATCH 1/2] map: Fix indexing for 3+ data structures --- src/boot/boot.janet | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/boot/boot.janet b/src/boot/boot.janet index 380f2863..922b759e 100644 --- a/src/boot/boot.janet +++ b/src/boot/boot.janet @@ -908,7 +908,7 @@ (while true (if (= nil (set k1 (next i1 k1))) (break)) (if (= nil (set k2 (next i2 k2))) (break)) - (if (= nil (set k3 (next i2 k3))) (break)) + (if (= nil (set k3 (next i3 k3))) (break)) (array/push res (f (in i1 k1) (in i2 k2) (in i3 k3))))) 4 (do (var k1 nil) @@ -918,8 +918,8 @@ (while true (if (= nil (set k1 (next i1 k1))) (break)) (if (= nil (set k2 (next i2 k2))) (break)) - (if (= nil (set k3 (next i2 k3))) (break)) - (if (= nil (set k4 (next i2 k4))) (break)) + (if (= nil (set k3 (next i3 k3))) (break)) + (if (= nil (set k4 (next i4 k4))) (break)) (array/push res (f (in i1 k1) (in i2 k2) (in i3 k3) (in i4 k4))))) (do (def iterkeys (array/new-filled ninds)) From a69799aa42d56cb31328f350eb8c2c95a629f505 Mon Sep 17 00:00:00 2001 From: Grazfather Date: Fri, 3 Dec 2021 20:44:35 -0500 Subject: [PATCH 2/2] Add tests for mapping different length sequences --- test/suite0001.janet | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/suite0001.janet b/test/suite0001.janet index 7501f37a..958449ce 100644 --- a/test/suite0001.janet +++ b/test/suite0001.janet @@ -288,6 +288,11 @@ (assert (deep= (map + [1 2 3] [10 20 30] [100 200 300] [1000 2000 3000]) @[1111 2222 3333])) (assert (deep= (map + [1 2 3] [10 20 30] [100 200 300] [1000 2000 3000] [10000 20000 30000]) @[11111 22222 33333])) +# Mapping uses the shortest sequence +(assert (deep= (map + [1 2 3 4] [10 20 30]) @[11 22 33])) +(assert (deep= (map + [1 2 3 4] [10 20 30] [100 200]) @[111 222])) +(assert (deep= (map + [1 2 3 4] [10 20 30] [100 200] [1000]) @[1111])) + # Sort function (assert (deep= (range 99)