Path: utzoo!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!pyrltd!root44!praxis!richard From: richard@praxis.co.uk (Richard Wendland) Newsgroups: comp.lang.misc Subject: Re: first class functions Keywords: proc, function, first class, scope, algol-68 Message-ID: <1991Mar8.202516.10401@praxis.co.uk> Date: 8 Mar 91 20:25:16 GMT References: <3787@bruce.cs.monash.OZ.AU> Organization: Praxis, Bath, U.K. Lines: 33 chl@cs.man.ac.uk (Charles Lindsey) writes: >In fact, I understand that the ALGOL 68RS system does in fact implement the >Bekic proposal, or something close to it. Only one of the ALGOL 68RS implementations, on the RSRE Flex architecture, permits procedures without the normal scope restrictions. I don't know of the Bekic proposal; the implementation on Flex uses normal ALGOL 68 syntax, only the scope rules being relaxed. The Flex architecture, designed around 1978, is geared towards efficient implementation by micro-code, as on a Perq. Heap activation records are always used, and retained by 'shaky pointers' on exit to be reused at the next call of that procedure. The (micro-coded) garbage collector recovers these retained activation records. Procedure values are used as capabilities on Flex, the microcode ensures procedures (and pointers) cannot be fabricated. This provides a secure multi-process environment in a single address space, with an extensible operating system. Flex also has a persistent store, so these first class procedures can even live on disc when you turn the power off! In fact the only real difference between a procedure you can produce and an operating system procedure is that the operating system procedure originated from a boot floppy. It's a shame Flex did not receive more publicity, as it implemented features much discussed later. I talk about it in the present, as I have a Perq running Flex next to me, but it doesn't get switched on too often these days. -- Richard Wendland richard@praxis.co.uk