Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!spool.mu.edu!uunet!mcsun!ukc!mucs!chl From: chl@cs.man.ac.uk (Charles Lindsey) Newsgroups: comp.lang.misc Subject: Re: Algol68 (and standards diatribe) Message-ID: Date: 26 Apr 91 08:42:02 GMT References: <1991Mar28.011025.16337@ico.isc.com> <2400045@otter.hpl.hp.com> Organization: Dept. Of Comp Sci, Univ. of Manchester, UK. Lines: 29 In <2400045@otter.hpl.hp.com> sfk@otter.hpl.hp.com (Steve Knight) writes: >I think we are talking about the same limitation here. I was alluding to >the restriction in Algol68 of being unable to return procedures whose scope >includes non-global variables declared in a wider scope. In short, the >failure to implement lexical binding according to (say) the lambda calculus. >Of course, C and Pascal are poor choices. Why not choose an earlier language >such as Simula67, where no such restriction exists? Other obvious choices >might be Pop11, Common Lisp, or Standard ML. All of these languages, and >many other, implement lexical binding in its full glory without any >restriction. Standard ML is an especially good comparison because it is >strongly typed. Modula-3 is going o be another candidate. Yes, but all these languages pay a high run-time overhead for the facility. This issue was discussed exhaustively at the time of the ALGOL 68 Revision, and the decision was that ALGOL 68 had been designed as a language to be implemented using a conventional stack, and it would be better to leave such facilities to newer languages designed round a different philosophy (such as SML). We wanted to avoid the FORTRAN approach of trying to catch up with our competitors, but with a 10-year time delay :-). A lot of time was spent investigating implementation problems, but we wanted to adhere to the Bauer Criterion (that people who did not use a facility should not pay for it) and we kept coming across obscure problems which prevented this from being met. What we did recommend as the way to graft this sort of thing onto an existing language was partial parametrization. This was described as an extension after the revision was completed, but noone has implemented it so far as I know :-(.