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