Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!husc6!mit-eddie!uw-beaver!tektronix!tekcrl!tekchips!willc
From: willc@tekchips.TEK.COM (Will Clinger)
Newsgroups: comp.lang.misc
Subject: Lazy evaluation (was "H.O.Functions + Polymorphism")
Message-ID: <1437@tekchips.TEK.COM>
Date: Fri, 10-Jul-87 13:15:54 EDT
Article-I.D.: tekchips.1437
Posted: Fri Jul 10 13:15:54 1987
Date-Received: Sun, 12-Jul-87 12:55:48 EDT
References: <...> <2637@crcge1.UUCP>  <1345@ogcvax.UUCP> <1332@ssc-vax.UUCP>
Reply-To: willc@tekchips.UUCP (Will Clinger)
Organization: Tektronix, Inc., Beaverton, OR.
Lines: 23

In article <1332@ssc-vax.UUCP> dickey@ssc-vax.UUCP (Frederick J Dickey) writes:
>                                           ....My recollection is that
>"lazy evaluation"-type parameter passing strategies are much easier to 
>describe formally than the way parameter passing is usually done in
>imperative languages.

It depends on the kind of formal semantics you're using.  In the simplest
kind of denotational semantics, known as a "direct" semantics, a by-name
strategy is slightly simpler to describe.  In a "standard" semantics,
which is the kind needed to describe most real-world programming languages,
by-value is simpler.  In some operational semantics, such as the rewrite
rules used by lambda calculus, by-name seems slightly simpler to me, but
I've found by-value to be simpler when using rewriting rules as an operational
semantics for nondeterministic languages.  Finally, the beta-substitution
rule that characterizes by-name and seems so desirable in a deterministic
world causes trouble in a nondeterministic world.

So I don't pay much attention to arguments based on the alleged semantic
simplicity or complexity of by-name or by-value arguments.  I think it's
a software engineering issue, and that both have their place.

Peace, Will Clinger
Tektronix Computer Resea qke tve