🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #6469

Re: first class functions (opps)

#6469
From: Charles Lindsey
Date: Thu, 11 May 1989 11:36
37 lines
1973 bytes
In article <2824@garth.UUCP> smryan@garth.UUCP (s m ryan) writes:
>>Algol68 doesn't quite have first-class functions. You are not allowed to
>>export a function out of the extent of the block that declared it,
>>*especially* if it references locals of the outer block, i.e., the
>>interesting and useful case.
>
>I've heard this claim but I don't see where the language (and not some
>compiler) prohibits
>
>	begin
>	  heap int i;
>	  int: i+:=1
>	end

ALGOL 68 Report 5.4.1.2
	The yield of a routine-text T {e.g. INT: i+:=1}, in an environ E, is
	composed of T and the environ "necessary for" T in E.

ALGOL 68 Report 7.2.2.c The environ necessary for T {INT: i+:=1} in this case
	is that corresponding to the BEGIN ... END, because T contains an
	identifier {i} that does not identify a defining-identifier contained
	in T, but does identify one contained in the BEGIN ... END {I
	paraphrase the Report considerably here}.

ALGOL 68 Report 2.1.3.5.c
	The scope {or extent} of a routine is the scope of its environ.

ALGOL 68 Report 3.2.2.a
	The yield of a serial-clause {the ... inside the BEGIN ... END} in an
	environ E {some outer block where the result of the BEGIN ... END was
	needed} ..... . It is required that that yield be not newer in scope
	than E.

The effect of all this, in plain terms, is that you may export a routine out
of as many blocks as you like until you reach its "necessary environ", which
is one where some identifier used in the routine is declared. There you must
stop.
Technical Details
Message-ID: <6105@ux.cs.man.ac.uk>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!mcvax!ukc!mucs!r1!chl
References: <10253@orstcs.CS.ORST.EDU> <2400023@otter.hpl.hp.com> <2824@garth.UUCP>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!mcvax!ukc!mucs!r1!chl
From: chl@r1.uucp (Charles Lindsey)
Newsgroups: comp.lang.misc
Subject: Re: first class functions (opps)
Message-ID: <6105@ux.cs.man.ac.uk>
Date: 11 May 89 11:36:14 GMT
References: <10253@orstcs.CS.ORST.EDU> <2400023@otter.hpl.hp.com> <2824@garth.UUCP>
Sender: news@ux.cs.man.ac.uk
Reply-To: chl@r1.UUCP (Charles Lindsey)
Organization: University of Manchester, UK
Lines: 37