comp.lang.ada
 help / color / mirror / Atom feed
* Modest proposal, 1 of 3
@ 1996-11-21  0:00 Van Snyder
  1996-11-22  0:00 ` Robert A Duff
  1996-11-26  0:00 ` Tucker Taft
  0 siblings, 2 replies; 3+ messages in thread
From: Van Snyder @ 1996-11-21  0:00 UTC (permalink / 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




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~1996-11-26  0:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-11-21  0:00 Modest proposal, 1 of 3 Van Snyder
1996-11-22  0:00 ` Robert A Duff
1996-11-26  0:00 ` Tucker Taft

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox