Subject: Re: copying a vector? (Stalin 0.9?)
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 9 Jan 2001 03:43:17 GMT
Newsgroups: comp.lang.scheme
Message-ID: <93e1cl$n6kpg$1@fido.engr.sgi.com>
I previously wrote:
+---------------
| ... ALGOL-10 used a "display", which was accessible from the dynamic
| link (frame pointer), to handle access to lexicals. So even if an
| argument was passed from a nested procedure, looking just "up one"
| from the current frame pointer would get you the lexical context of
| said nested procedure, and from *its* display you can get to any of
| the lexicals which were visible to it (including those in routines
| in which it was nested).
+---------------

Just to clarify one tiny point, lest I mislead someone:

While argument thunks referring to lexical variables (or expressions)
didn't themselves need a closure environment per se (since they could
recover the caller's display from the call frame), an argument which
was a procedure name *did* have to contain the display as a (hidden)
part of the argument, since without it the procedure argument couldn't
be called correctly (especially if that argument might be passed on
to a further sub-procedure as an argument).

So "procedure arguments" *were* very much like Scheme closures, even
though the thunks of other kinds of by-name arguments weren't really.


-Rob

-----
Rob Warnock, 31-2-510		rpw3@sgi.com
SGI Network Engineering		http://reality.sgi.com/rpw3/
1600 Amphitheatre Pkwy.		Phone: 650-933-1673
Mountain View, CA  94043	PP-ASEL-IA