Automata via Macros (2006)
cs.brown.edu
cs.brown.edu
I mentioned this paper and (stupidly) didn't include a direct link to it—definitely worthy of front-page HN attention.
Another cross-ref: EdwardCoffin mentioned a (blog? chatroom?) post [1] by Guy Steele on why OO languages need tail calls; in that chat, Guy Steele references Automata via Macros.
Nice to see a confluence of ideas. :)
[1]: https://web.archive.org/web/20091206042608/http://projectfor...
Direct link to the PDF: https://cs.brown.edu/~sk/Publications/Papers/Published/sk-au...
Automata via Macros (Lisp) [pdf] - https://news.ycombinator.com/item?id=2723429 - July 2011 (3 comments)
It should be unsurprising that CL has construct(s) that allow this, given that the specification does not guarantee tail-call elimination.
https://www.kylheku.com/cgit/lisp-snippets/tree/tail-recursi...
No docs or test suite, sorry. Just block comments.
A trampoline based thing, deftail, is provided for global tail calls.
In the paradigm implemented in this file, calls to tail functions are always tail calls, even if not in a tail context. If it looks like the return value of a tail call is used, too bad; that will never be reached.