Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!pasteur!ucbvax!hplabs!sri-unix!quintus!ok From: ok@quintus.uucp (Richard A. O'Keefe) Newsgroups: comp.lang.misc Subject: Re: aGREeable features (was Re: Algol-68 down for the count) Keywords: Algol-60,call-by-name Message-ID: <820@quintus.UUCP> Date: 7 Dec 88 00:55:48 GMT References: <406@ubbpc.UUCP> <3688@hubcap.UUCP> <2070@garth.UUCP> <796@quintus.UUCP> <2130@garth.UUCP> Sender: news@quintus.UUCP Reply-To: ok@quintus.UUCP (Richard A. O'Keefe) Organization: Quintus Computer Systems, Inc. Lines: 57 In article <2130@garth.UUCP> phipps@garth.UUCP (Clay Phipps) writes: >In article <796@quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes: >>In article <2070@garth.UUCP> phipps@garth.UUCP (Clay Phipps) writes: >>>My recollection is that call-by-name was included in Algol 60 >>>to simplify implementation of some numerical analysis algorithm >>Completely bogus. >Call by name *is* the default parameter mechanism. So it is. But it was not introduced to "simplify...some numerical analysis algorithm". That is the claim which I identified as bogus. >>You may be thinking of a neat hack called >>"Jensen's device" which in effect gave you lambda-expressions: ... >I will leave it to O'Keefe to argue the point with Bauer (if living). >I'm not an expert on lambda-anything. lambda-expression = anonymous procedure. That's all you need to understand. I didn't say that call-by-name _is_ lambda expressions, but that Jensen's device (if you would have called p(..., lambda(x,y,z)expr, ...) do instead p(..., x, y, z, expr, ...) ) gave you the _effect_ of lambda-expressions. >>Nope. The origin of pass-by-name semantics is explained very clearly >> in the Algol-60 report. By "origin" I meant not "rationale" (the rationale for pass-by-name is that Fortran provided pass-by-reference, and the Algol 60 designers -- some of the minutes of the Algol 60 committee were published years before the HOPL conference -- wanted Algol 60 procedures to be at least as powerful as Fortran ones, so something was needed in addition to value parameters) but "ground"/"cause"/&c. Pass-by-name comes *very* naturally out of the "copy rule", which is described in the Algol 60 report. (Pass by reference would not.) My recollection (which is doubtless as inaccurate as Phipps') is that the "copy rule" came first, and that the semantics of pass-by-name were a consequence of it. So the origin of pass-by-name, namely the copy rule for explaining how procedures work, is indeed described in the Algol 60 report. >>After a few examples ..., pass-by-name becomes very simple to grasp. >Indeed it does, but I had grasped call by name years before your tutorial. That is beside the point: the claim I was refuting was not "Phipps does not understand call-by-name" but "call-by-name is hard to understand". >>The *consequences* of pass-by-name are another matter, ... >The *consequences* are among the things that must be considered >in judging the merit of a feature like call by name. No-one is disputing that.