Wise Observation
“In imperative languages, loops tend to come it just two or three flavors (for, while, repeat). The problem is that loops result type is VOID so the only way to communicate results from the loop body to the outside is via SET!.” — Matthias Felleisen on writing idiomatic PLT Scheme