Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!crdgw1!uunet!mcsun!ukc!pyrltd!root44!praxis!mct From: mct@praxis.co.uk (Martyn Thomas) Newsgroups: comp.lang.misc Subject: Re: Mea culpa (was: Re: Re: Algol68 (and standards diatribe)) Message-ID: <1991May16.085746.9964@praxis.co.uk> Date: 16 May 91 08:57:46 GMT References: <1991May10.162820.2662@maths.nott.ac.uk> <1991May13.165257.9727@maths.nott.ac.uk> <1991May14.170256.1592@odin.diku.dk> Organization: Praxis, Bath, U.K. Lines: 25 thorinn@diku.dk (Lars Henrik Mathiesen), commenting on Algol 68's scope rules for procedures, writes: :If the rule was to be relaxed, Algol68 would in effect have closures :(environment, not parameter): In general, the value yielded by a :routine text must somehow contain the values of all non-local tags :mentioned in it, without referring to the _current_ stack. In a :implementation with support for parallelism (and thus multiple stacks) :this might not be hard, but I can see why the committe decided not to :demand it (if indeed they thought about it?). The rule *was* relaxed in the Algol 68 implementation for the FLEX machine (a microcoded capability architecture, developed at RSRE, Malvern, UK, and used for general software development for meny years). FLEX had hardware garbage collection and unforgeable references. Making procedures into first-class values apparently led to a very natural and powerful programming style. Score another point for RSRE (and for Ian Currie in particular). -- Martyn Thomas, Praxis plc, 20 Manvers Street, Bath BA1 1PX UK. Tel: +44-225-444700. Email: mct@praxis.co.uk