From 07fb17b75393282ad14aef518b79f7db824e61ec Mon Sep 17 00:00:00 2001 From: hellerve Date: Wed, 29 Jan 2020 15:48:02 +0100 Subject: [PATCH] core: make foreach loop counter hygienic --- core/Macros.carp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/Macros.carp b/core/Macros.carp index b358df7e..85ecf8af 100644 --- a/core/Macros.carp +++ b/core/Macros.carp @@ -171,11 +171,12 @@ (defndynamic foreach-internal [var xs expr] (let [xsym (gensym-with 'xs) - len (gensym-with 'len)] + len (gensym-with 'len) + i (gensym-with 'i)] (list 'let [xsym xs len (list 'Array.length xsym)] - (list 'for ['i 0 len] - (list 'let [var (list 'Array.unsafe-nth xsym 'i)] + (list 'for [i 0 len] + (list 'let [var (list 'Array.unsafe-nth xsym i)] expr))))) (defmacro foreach [binding expr]