Loops for loop, DSSSL and loops, implementing (DSSSL) tail recursion (DSSSL) DSSSL doesn't have any construct that resembles the for loop that occurs in most imperative languages like C and Java. Instead, DSSSL employs a common trick in functional languages for implementing a loop: tail recursion. Loops in DSSSL use a special form of let. This loop counts from 1 to 10: (let loopvar ((count 1)) (if (> count 10) #t (loopvar (+ count 1)))) This variable controls the loop. It is declared without an initial value, immediately after the let operand. variables (DSSSL) local, defining after loop variable Any number of additional local variables can be defined after the loop variable, just as they can in any other let expression. If you ever want the loop to end, you have to put some sort of a test in it. This is the value that will be returned. Note that you iterate the loop by using the loop variable as if it was a function name. The arguments to this function are the values that you want the local variables declared in to have in the next iteration.