(assert= (let ((x 0)) (let loop () (when (< x 5) (set! x (+ x 1)) (loop))) x) 5 "set! counter in named let loop") (assert= (let ((acc (list))) (let loop ((i 0)) (when (< i 3) (set! acc (append acc (list i))) (loop (+ i 1)))) acc) (list 0 1 2) "set! list accumulator in named let with param") (assert= (let ((acc (list)) (i 0)) (let loop () (when (< i 3) (append! acc i) (set! i (+ i 1)) (loop))) acc) (list 0 1 2) "append! + set! counter in named let") (assert= (let ((sum 0)) (let loop ((i 1)) (when (<= i 10) (set! sum (+ sum i)) (loop (+ i 1)))) sum) 55 "set! sum in named let loop (1..10)") (assert= (let ((result "")) (let loop ((i 0)) (when (< i 3) (set! result (str result (str i))) (loop (+ i 1)))) result) "012" "set! string accumulator in named let") (assert= (let ((x 0)) (set! x 42) x) 42 "set! in plain let (baseline)") (assert= (let loop ((i 0) (acc 0)) (if (< i 5) (loop (+ i 1) (+ acc i)) acc)) 10 "named let without set! (baseline)")