>>35GOTO is infused through all of this. It doesn't matter if it's a literal GOTO or not, the concept is exactly the same, and the lack of abstraction beyond that is a problem. The only way you can safely loop in Scheme is to perform GOTOs that don't leave stack context around. A call is a GOTO if it doesn't return, and tail calls don't return. Often it is simply a nice performance freebie that happens to give your code a hand, but having to manage making a clean break from your prior code to make sure you don't blow up your memory is low-level hackery that high level programmers shouldn't have to deal with.
Frankly, if you don't get the concept of GOTO past the literal BASIC/C/etc statement, then you're retarded.