From: "Alf P. Steinbach" Date: 2007-10-07T19:15:02+09:00 Subject: Re: which language allows you to change an argument's value? * James Kanze: > On Oct 4, 12:35 am, "John W. Kennedy" wrote: >> Dennis Lee Bieber wrote: >>> On Mon, 01 Oct 2007 01:53:47 GMT, Roedy Green >>> declaimed the following in >>> comp.lang.python: > >>>> Seem to me you could in FORTRAN and Pascal, and maybe even Algol. It >>>> has been a while. > >>> Everything in classic FORTRAN is a passed as a reference -- even >>> constant arguments are passed as a reference to the memory location >>> containing that constant (which is why it was possible in very early >>> FORTRANs to have "a = 1 + 1" yield something other than "2" if preceded >>> by, say, "call mutate(1)" where mutate looks like: > >>> subroutine mutate(arg) >>> arg = arg * 2 >>> end >>> ) > >> However, some implementations passed /and returned/ elementary >> arguments by value, as Ada does. (The object code was >> typically faster that way, and FORTRAN semantics were such >> that the difference was almost impossible to observe.) > > The Fortran standard is carefully worded to allow either pass by > reference, or copy-in, copy-out. IIRC, IBM's Fortran-H used > copy-in/copy-out, but most others used call by reference. > > Straight copy was never allowed by the standard, and I've never > heard of a pre-standard implementation which used it either. This is all to simple. Please discuss Algol pass-by-name. Much more interesting, and a good candidate for inclusion in C++ -- at least, if we're going to achieve the goal of PL/1-killer! :-) Cheers, - Alf (off-topic) -- A: Because it messes up the order in which people normally read text. Q: Why is it such a bad thing? A: Top-posting. Q: What is the most annoying thing on usenet and in e-mail?