home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!caen!spool.mu.edu!olivea!apple!voder!woodstock!news
- From: dyer@airplane.sharebase.com (Scot Dyer)
- Newsgroups: comp.lang.scheme
- Subject: Re: applying or
- Message-ID: <1993Jan4.190258.10397@sharebase.com>
- Date: 4 Jan 93 19:02:58 GMT
- References: <MOB.92Dec30090646@strident.think.com> <1hsiocINN2v6@columbia.cs.ubc.ca> <1992Dec31.181545.19917@sharebase.com> <1i06a0INNgtl@columbia.cs.ubc.ca>
- Reply-To: dyer@airplane.sharebase.com (Scot Dyer)
- Organization: NCR/ShareBase Corporation
- Lines: 47
-
- From: manis@cs.ubc.ca (Vincent Manis)
- ///
- /// In article <1992Dec31.181545.19917@sharebase.com>
- /// dyer@airplane.sharebase.com (Scot Dyer) writes:
- /// >Even in Algol, implicit delayed evaluation of procedure parameters was
- /// >allowed -- a scary coincidence, yes? :)
- /// [...]
- /// Er, yes, and if you want to know the truth about `call-by-name', read
- /// Don Knuth's article `Algol 60 Confidential', which appeared in CACM
- /// sometime around '68. Name parameters and own[*] variables were ideas which
- /// were very elegant indeed; the only problem with them was that they
- /// couldn't be implemented efficiently (or at all, as in the case with own
- /// array variables with dynamic bounds). I'm a great fan of elegance, but I
- /// like my programs to run at speeds somewhat faster than glacial, too.
-
- Most original ideas contain flaws like this that people don't see until they
- write perverse procedures like your "foo" LISPs mis-use of NIL might be
- irritating, but compare it to the FORTRANs that were availible at the time
- and the flaw seems quite minor.
-
- I don't believe either own variables or named parameters interact with delay-ed
- evaluation of procedure parameters (like in "if" or... see subject: line),
- though. It is a nice perversity for Algol fans, though. :)
-
- /// [*] Own variables were Algol 60's counterpart of statics. The problem
- /// was that own variables were first class, which led to things like
- ///
- /// procedure foo(i);
- /// integer i;
- /// begin
- /// own integer a[i];
- /// integer j;
- /// if i < 10 then
- /// for j := 1 to i do
- /// read(a[j]);
- /// else
- /// a[11] := a[12];
- /// end;
- ///
- /// foo(9); foo(12); foo(9); foo(12);
- ///
- /// It really helps when designing a programming language to be able to
- /// attribute a meaning to all legal programs!
-
- Or to know exactly which programs should be considered illegal. I don't think
- context-free description is really that valuable for semmantics... As the
- above procedure demonstrates.
-