Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!houxm!houxz!vax135!floyd!whuxle!mit-eddie!genrad!decvax!mcnc!ncsu!uvacs!mac
From: mac@uvacs.UUCP
Newsgroups: net.lang
Subject: goto/tail-recursion &c.
Message-ID: <1328@uvacs.UUCP>
Date: Sat, 2-Jun-84 11:35:22 EDT
Article-I.D.: uvacs.1328
Posted: Sat Jun  2 11:35:22 1984
Date-Received: Tue, 5-Jun-84 08:48:50 EDT
Lines: 30

pseudorandom thoughts on the
    Expensive Procedure Call / LAMBDA as Ultimate GOTO
	myth.

I'm curious what mit-eddi!alan (mit-eddi.1979) learned as his first
programming language.  Is he perhaps also brain-damaged?  I started with
FORTRAN on an 1130, but feel that I've recovered since then.  Or is this an
exercise in Dijkstra-like arrogance and ridiculous rhetoric?

I agree with mit-eddi!gumby (mit.eddi.1986) that LISP isn't normally
object-oriented, though it's likely that those clever folks at MIT have
made it so.  I'm not sure about CLU.  Is overloading an adequate substitute
for late binding?  Maybe it's better.

On the subject of CLU, in reading the manual I was interested in the
treatment of exits/conditions.  CLU seems to make it possible to staticly
trace the possible control flow for these, unlike e.g.  Ada, where
exception handlers are dynamicly bound.  Is this adequate?  It looks like
a better idea.  mit-eddi!gumby (mit.eddi.1986) seems to agree.

Tail-recursion elimination does remove a lot of trace information, making
it somewhat harder to debug.  On the other hand, gotos (& whiles, &
selects, &c.) don't leave any trace information.  These are what the tail-
recursion is usually replacing.  Maybe interpreter/compilers could be
instructed to retain call trace information in the same way that some
debuggers retain jump trace information.

					    no longer

 ARPA: mac%uvacs@csnet-relay CS: mac@virginia USE: ...uvacs!mac