Here, we'll examine some Lisp features that are newer, unstandardized, experimental, or controversial. But in many cases it's easier to write efficient iterative code than it is to write efficient recursive code. In chapters 4 and 28 we saw how to write tail-recursive code, and learned that Lisp is not required to optimize tail calls. Ironically, iteration is very important in this implementation of a language originally conceived as a notation for recursive functions . An extended loop facility was introduced late in the specification of Common Lisp.
Extended loop uses keywords to specify initialization, actions and termination conditions.
Extended loop inspires heated disagreements among Lisp users. Its detractors point out that the behavior is underspecified for complex combinations of options, while its supporters point out that extended loop forms are easier to read than most DO forms for simple operations. GO if you must Ever since the structured programming revolution of the 1970's, programmers and language designers alike have been apologetic about the GOTO construct. Yet there are rare cases where a well-placed GOTO , used with careful consideration, is the clearest way to structure the control flow of an algorithm. Lightweight processes allow you to write pieces of code which share the CPU's time along with all of the global variables in your LISP environment.