From: vsnyder@math.jpl.nasa.gov (Van Snyder)
Subject: Modest proposal, 1 of 3
Date: 1996/11/21
Date: 1996-11-21T00:00:00+00:00 [thread overview]
Message-ID: <572q86$g7m@netline-fddi.jpl.nasa.gov> (raw)
BACKGROUND
Suppose procedure A contains B, but not C and D. Suppose furthermore
that an access-to-procedure type T that is compatible with B is
visible to all three. Notwithstanding the visibility, A is not
able to pass access-to-B to C as an argument.
The reason is that C might store its formal argument of type access-to-
procedure into a (relatively) global variable, and then D (or somebody
else) could use it to call B after its up-level environment (A's
local variables) disappears.
The crucial problem is the ability of C to store access-to-B into
a more global variable. Absent that ability, it's a trivial exercise
in induction to show that B can only be invoked when its up-level
exists.
PROPOSAL for the next standardization of Ada
Allow the "limited" keyword as an argument-passing mode, similar to
"in". The interpretation is that arguments of mode "limited" can only be used
to access something, or be bound as an actual argument to a formal argument of
"limited" mode. In particular, as for other "limited" objects, assignment is
not defined.
Thus, one cannot store a copy of the argument into a more global
variable.
Then, allow access-to-procedure constants to be bound as actual
arguments to formal arguments of the appropriate type, but only
so long as the formal argument is of "limited" mode.
--
What fraction of Americans believe | Van Snyder
Wrestling is real and NASA is fake? | vsnyder@math.jpl.nasa.gov
next reply other threads:[~1996-11-21 0:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-11-21 0:00 Van Snyder [this message]
1996-11-22 0:00 ` Modest proposal, 1 of 3 Robert A Duff
1996-11-26 0:00 ` Tucker Taft
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox