Subject: Re: copying a vector? (Stalin 0.9?)
From: (Rob Warnock)
Date: 9 Jan 2001 03:43:17 GMT
Newsgroups: comp.lang.scheme
Message-ID: <93e1cl$n6kpg$>
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 Warnock, 31-2-510
SGI Network Engineering
1600 Amphitheatre Pkwy.		Phone: 650-933-1673
Mountain View, CA  94043	PP-ASEL-IA