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.