From ... Path: archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!newsfeed.icl.net!opentransit.net!jussieu.fr!univ-lyon1.fr!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> <87n13ndwus.fsf@pps.jussieu.fr> <87eloz8417.fsf@pps.jussieu.fr> <87r8syosjs.fsf@pps.jussieu.fr> Mail-Copies-To: never From: Erik Naggum Message-ID: <3210249273790367@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 40 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, 23 Sep 2001 15:54:36 GMT X-Complaints-To: newsmaster@Norway.EU.net X-Trace: nreader1.kpnqwest.net 1001260476 193.71.66.49 (Sun, 23 Sep 2001 17:54:36 MET DST) NNTP-Posting-Date: Sun, 23 Sep 2001 17:54:36 MET DST Xref: archiver1.google.com comp.lang.lisp:16832 * Juliusz Chroboczek > On the other hand, consider the following: > > (defun foo () > (foo)) > > and suppose that you compile FOO without tail-call elimination. Does > FOO terminate? Why do you not distinguish between "terminate" and "signal an error"? > Thus, tail call elimination is not a mere optimisation, but a semantic > feature. This is just plain wrong. Your semantic feature rests on an equivocation between termination and crashing. I fail to see how this can reasonably be considered anything but _completely_ bogus. What is the _value_ of a crash? Rather, a crash is the antithesis of termination, because it _prevents_ every reasonably expectation from a termination. The same is true for a non-idiotic example which takes enough time to terminate that it can run out of some resources, like electric power or memory or disk space or whatever -- hell, that might even happen immediate after it has _started_ running. It is profoundly counter-productive to treat each and every cessation of execution the same way. I wonder what kind of silly theoretical framework has found it useful to abstract away the value of a computation so one could study the conditions for cessation of execution without concern for what the computation yields. It seems to be one of those useless theories that are used only to prove something that is wrong and that every reasonable person knows to be wrong, but which can be shown to be true if you accept a whole bunch of insane premises that have been divorced from the reality and purpose of computing. Again, it is typical that this discussion centers around a Scheme feature. /// -- Why did that stupid George W. Bush turn to Christian fundamentalism to fight Islamic fundamentalism? Why use terms like "crusade", which only invokes fear of a repetition of that disgraceful period of Christianity with its _sustained_ terrorist attacks on Islam? He is _such_ an idiot.