comp.lang.ada
 help / color / mirror / Atom feed
From: wdl39!mab@ford-wdl1.arpa  (Mark A Biggar)
Subject: Re: Passing procedures as parameters to procedures.
Date: 4 May 93 16:25:08 GMT	[thread overview]
Message-ID: <1993May4.162508.13164@wdl.loral.com> (raw)

In article <1993May4.154040@di.epfl.ch> Magnus.Kempe@di.epfl.ch (Magnus Kempe) 
writes:
>In article <1s5gae$kr4@huon.itd.adelaide.edu.au>, andrewd@winnie.cs.adelaide.e
du.au (Andrew Dunstan,,2285592,) writes:
>: As I pointed out in this group about a year ago, there are some things
>: that you want to be able to do that you just can't with generics. If
>: anybody can provide me with a good, clean, Ada equivalent of the
>: following Pascal code, I'll send him/her (first winner only!) a good
>: bottle of Australian red wine (damn this Beaujolais business!).
>: [Pascal code omitted]
>The solution is to make "D" visible.
>package Wrap_AD is
>  procedure D;
>  generic
>    with procedure B;
>  procedure A_G;
>end Wrap_AD;
>package body Wrap_AD is
>  procedure D is begin null; end D;
>  procedure A_G is
>  begin
>    B;
>  end A_G;
>end Wrap_AD;
>generic
>  with procedure Y;
>procedure X_G;
>procedure X_G is
>begin
>  Y;
>end X_G;
>procedure X is new X_G (Wrap_AD.D);
>procedure A is new Wrap_AD.A_G (X);
>...
>A;
>...
>Two drawbacks: if D needs to access local variables of A_G, these
>variables must be made global (but may be hidden in the body of
>Wrap_A); the parameter B to A_G need not call D, but you may consider
>it a "feature", a more powerful variant.

I think there is a way in Ada9x generics to do this and still keep the
nesting of d with out resorting to access to subprogram types.
If b were to be defined as a generic subprogram inside a generic package,
then by using the new genreic package formals you can instantate a with 
a generic version of b that can be instantiated inside the instantiation of a.

--
Mark Biggar
mab@wdl1.wdl.loral.com

             reply	other threads:[~1993-05-04 16:25 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-05-04 16:25 Mark A Biggar [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-05-10 22:56 Passing procedures as parameters to procedures Jack Dean
1993-05-06  9:39 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!darwi
1993-05-06  7:33 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!torn!
1993-05-05 21:35 cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!progers
1993-05-05 17:39 Robert Dewar
1993-05-05 17:35 Robert Dewar
1993-05-05 16:30 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!us
1993-05-05 11:40 cis.ohio-state.edu!news.sei.cmu.edu!firth
1993-05-05  9:50 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-05-04 23:44 cis.ohio-state.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!ho
1993-05-04 22:13 John Goodsen
1993-05-04 19:39 cis.ohio-state.edu!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!m
1993-05-04 16:41 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!ira.u
1993-05-04 15:43 Tucker Taft
1993-05-04 14:29 cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!spool.mu.edu!
1993-05-04 13:59 Tucker Taft
1993-05-04 13:45 cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!howland.
1993-05-04 13:45 cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uwm.edu!cs.utexas.edu
1993-05-04 10:25 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!us
1993-05-03 20:36 Mark A Biggar
1993-05-03 19:07 cis.ohio-state.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!ho
replies disabled

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