4 ms·
Yes, real compilers do handle `((lambda (x) ...) ...)` as well as a `let`, because as a Lisp programmer you want to be able to define and use new macros freely,
by abecedarius 6y ago
Yes, real compilers do handle `((lambda (x) ...) ...)` as well as a `let`, because as a Lisp programmer you want to be able to define and use new macros freely, without having to worry too much about low-level optimizations. Kent Dybvig gave a talk on this sort of thing called the "macro-writer's Bill of Rights". It's a similar concept to the recent talk about what optimizations need to be guaranteed for "zero-cost abstraction" in Rust and C++.
- pjmlp 6y agoThanks for the hint, lots of interesting talks on the conference. https://legacy.cs.indiana.edu/dfried_celebration.html https://legacy.cs.indiana.edu/dfried_celebration.html
- hnlauncher 6y agoBy guaranteed optimisations talk, are you referring to this blog post by Robert O'Callahan: https://robert.ocallahan.org/2020/08/what-is-minimal-set-of-optimizations.html https://robert.ocallahan.org/2020/08/what-is-minimal-set-of-...?
- abecedarius 6y agoYes, thanks.