From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2907a68906511623 X-Google-Attributes: gid103376,public From: vsnyder@gyre.jpl.nasa.gov (Van Snyder) Subject: Idea for Ada 200x: Arguments that are procedures Date: 1998/07/03 Message-ID: <6nh9f0$66i@netline.jpl.nasa.gov>#1/1 X-Deja-AN: 368256569 Content-Transfer-Encoding: 7bit Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Organization: Jet Propulsion Laboratory Newsgroups: comp.lang.ada Date: 1998-07-03T00:00:00+00:00 List-Id: Procedures that are arguments are restricted in Ada because of the possibility of copying the pointer to somewhere that has a longer lifetime than the up-level environment of the procedure. If an additional attribute were added to formal arguments to indicate that taking a copy of a procedure pointer is prohibited, restrictions on procedures that could be arguments could be reduced. Since "limited" already puts restrictions on assignment, how about using that word for the purpose of declaring a formal argument for which it's prohibited to take a copy. It could only be used to access a procedure, or passed as an actual argument to a formal argument that also had the "limited" attribute. This would let me have, for example, a library package for quadrature or minimization or differential equations or ... that exports a type for a procedure pointer argument, and use a procedure that's internal to my deep-in-the-guts-of-the-system procedure as the actual argument. I can't do this now, because the type might outlive the procedure, and therefore a pointer to the procedure might outlive its up-level. -- What fraction of Americans believe | Van Snyder Wrestling is real and NASA is fake? | vsnyder@math.jpl.nasa.gov