title: How are loops implemented in functional languages
body: <p>In functional languages such as <code>Scheme</code> or <code>Lisp</code> there exist <code>for</code> and <code>for-all</code> loops. However <code>for</code> loops require mutation since it's not a new stack frame each iteration. Since mutation is not available in these languages explicitly how do these functional languages implement their respective iterative loops?</p>