loop instructions is not isolating environment properly
Example:
(define (split lst) (loop (go (xs lst)) (if (null? xs) 0 (go (tail xs)))))
(define (fun) (let xs (list 1 2 3)) (println "A: " xs) (let y (split xs)) (println "B: " xs)
==> Output:
A: (1 2 3) B: ()
There seems a link between loop's xs and fun's xs (which should be actually isolated)