Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles; site ea.UUCP Path: utzoo!watmath!clyde!burl!mgnetp!ihnp4!inuxc!pur-ee!uiucdcs!ea!mwm From: mwm@ea.UUCP Newsgroups: net.lang Subject: Re: Re: Gotos; tail-recursion - (nf) Message-ID: <5400008@ea.UUCP> Date: Thu, 7-Jun-84 12:21:00 EDT Article-I.D.: ea.5400008 Posted: Thu Jun 7 12:21:00 1984 Date-Received: Mon, 11-Jun-84 00:18:17 EDT References: <1986@mit-eddi.UUCP> Lines: 42 Nf-ID: #R:mit-eddi:-198600:ea:5400008:000:1655 Nf-From: ea!mwm Jun 7 11:21:00 1984 #R:mit-eddi:-198600:ea:5400008:000:1655 ea!mwm Jun 7 11:21:00 1984 /***** ea:net.lang / mit-eddi!nessus / 8:55 am Jun 5, 1984 */ Of course, you could do the same with without tail recursion, but you would probably get discouraged pretty fast when you started getting stack overflows if your program ran for more than a few thousand steps. Without tail recursion, this would never discourage you, so if you might be tempted to do horrible things like this. I'm not saying that tail recursion is bad. Actually I think it is a good idea. But I think this problem is something to think about. -Doug Alan /* ---------- */ I'm completely confused. As I understand it, tail recursion is an implementation technique that allows languages to generate faster code. People may write code to take advantage of this, but it still doesn't change the semantics of the language. Hence comparing it to gotos, loops and etc. doesn't seem to make sense. You also have a logical fallacy. You seem to think that being able to do bad things with a language feature is a good reason to consider taking it out of a language. Consider the following piece of ALGOL-W that I've had handed in to me: IF x = y THEN ELSE BEGIN END Now, this is a pretty horrible thing. This doesn't make the if-then-else construct bad, it makes the programmer bad. Let me go out on a limb by extending this: There are *no* bad language constructs, merely bad uses for them. There are, however, good language constructs: those that make it easier for me to express my algorithms. If-then-else is better than if-goto for that reason. Likewise, data structures and data abstraction are better than arrays.