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.