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> <2hwv1p7t4a.fsf@dslab7.cs.uit.no> Mail-Copies-To: never From: Erik Naggum Message-ID: <3212616172232851@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 38 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 01:22:54 GMT X-Complaints-To: newsmaster@Norway.EU.net X-Trace: nreader1.kpnqwest.net 1003627374 193.71.66.49 (Sun, 21 Oct 2001 03:22:54 MET DST) NNTP-Posting-Date: Sun, 21 Oct 2001 03:22:54 MET DST Xref: archiver1.google.com comp.lang.lisp:18298 * Frode Vatvedt Fjeld | What if? The compiler must deal with macros and compiler-macros | regardless, and I don't see how they come into play here. The questions I have tried in vain to raise are: How much knowledge do you require to be able to use your idea productively? What does it mean to employ your suggested form around another form? Common Lisp does not, in fact, provide you with any information how a particular form will be compiled. A function call may be inlined, which you may defeat with your desire for a tail-call-merging request, it may be turned into several function calls, most anything can happen between source and machine code. Therefore, if your idea is not able to encompass an entire function's body, it is completely useless, because it may _have_ to encompass an entire function's body even if you think you are giving it a function call. If you really want to tell your compiler that an _actual_ function call should be tail-call merged, you first have to know if your compiler will actually generate a non-merged function call that _could_ be a merged tail call. In other words, it is an idea that fits languages that do not do anything "interesting" with the code they compile. Instead of providing something useful, such as important information for your compiler, you are instead limiting your compiler's ability to do interesting things with your code. If you want to do something useful by changing the language, I suggest finding/inventing ways to tell your compiler that you promise never to change the definition of some functions, classes, methods, whatever. That kind of information would be tremendously useful to the compiler, because it can make assumptions that it cannot make today and which necessarily means less opportunity for some kinds of optimization. /// -- 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