2 ms·
> I don't think your second link says what you claim it does. Based on the historical context of the standardization effort, I read "There is no standardized m
by User23 5y ago
> I don't think your second link says what you claim it does.
Based on the historical context of the standardization effort, I read "There is no standardized mechanism for users to add extensions to loop." as the standards body punting and basically giving implementers free reign to include whatever extensions they like. That's certainly what they did anyhow. However on a more careful reading I agree I probably misread that particular line. That's not to say that the practical effect isn't what I observed though. It's hard to find a solid reference, but look at this mess[1]. "Each of the above three LOOP variations can coexist in the same LISP environment." gives a hint of the messiness that follows.
[1] https://github.com/sbcl/sbcl/blob/master/src/code/loop.lisp https://github.com/sbcl/sbcl/blob/master/src/code/loop.lisp
- lispm 5y agoHaving different iteration constructs or having multiple versions of the same was not untypical on a Lisp Machine, which booted into a single Lisp runtime, but which contained several different Lisp dialects and their language constructs. That way one did not need to reboot the computer to use a different LOOP variant - because the Lisp image was shared in the OS. The LOOP code you mentioned came from MIT and Symbolics from the 70s/80s, when multiple Lisp dialects were under use and sometimes, on a Lisp Machine, in the same runtime. The original MIT LOOP implementation had a single source code, which could be loaded into different Lisp dialects and systems. The CL standardization of LOOP was more than ten years later.
- kazinator 5y agoMultiple implementations of loop being able coexist in the same language is an example of clean design that speaks in favor of macros. If there is an issue in the implementation of for in your C++ compiler, or JavaScript machine, can you cleanly bring in another for implementation and switch the code over to it? While code that is not affected by the problem sticks with the same one?