From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!news2.kpn.net!news.kpn.net!nslave.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader1.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: Tail recursion & CL References: <87iteghyva.fsf@pps.jussieu.fr> <87zo73fsr4.fsf@pps.jussieu.fr> <3211542753013083@naggum.net> <3211612557359956@naggum.net> <4jDDO4+sWd7EGsbKaJrm6tFaAqq4@4ax.com> <3bc3f0e5.394414087@news.callatg.com> <87669m5b8y.fsf@pps.jussieu.fr> <3bc6887a.564291097@news.callatg.com> <871yk8nc52.fsf@pps.jussieu.fr> <8bbd9ac3.0110130835.6ccb7894@posting.google.com> <87vghgcyyt.fsf@pps.jussieu.fr> <3bcd2e7a.1000063244@news.callatg.com> <3bcdb42c.1034288978@news.callatg.com> <3bd0cbd8$0$30612$9b622d9e@news.freenet.de> <3bd10346.1251147184@news.callatg.com> <2helny8vb9.fsf@dslab7.cs.uit.no> <3212581297705213@naggum.net> <2h669a8cni.fsf@dslab7.cs.uit.no> <3212605764038030@naggum.net> Mail-Copies-To: never From: Erik Naggum Message-ID: <3212695116153606@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 26 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 21 Oct 2001 23:18:38 GMT X-Complaints-To: newsmaster@Norway.EU.net X-Trace: nreader1.kpnqwest.net 1003706318 193.71.66.49 (Mon, 22 Oct 2001 01:18:38 MET DST) NNTP-Posting-Date: Mon, 22 Oct 2001 01:18:38 MET DST Xref: archiver1.google.com comp.lang.lisp:18330 * Jeff Mincy | Note that when looking at return-from, you also need to make sure that | the block 'foo' being returned from is the outermost block of the | function 'foo'. Good point. As we investigate this, more and more context turns out to to be required to determine whether we have a "final" function call. I think this shows that the complexities of real life programming, which is what Common Lisp is all about making less complex, are such that you end up with a lot fewer opportunities for tail-call merging than in languages made for simpler worlds. It is actually quite interesting to see how simple the functions have to be in order that, e.g., Allegro CL, manages to perform tail-call merging and how little of the useful stuff in Common Lisp can be used without making it too hard for the compiler to do that. | I think I cared about tail calls only to the extent that it could be used | to make silly benchmarks like tak run faster. :) /// -- Norway is now run by a priest from the fundamentalist Christian People's Party, the fifth largest party representing one eighth of the electorate. -- The purpose of computing is insight, not numbers. -- Richard Hamming