comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Access keyword
Date: Wed, 30 Apr 2008 18:40:43 -0500
Date: 2008-04-30T18:40:43-05:00	[thread overview]
Message-ID: <fvb03k$1j7$1@jacob-sparre.dk> (raw)
In-Reply-To: 2cc577f4-704a-4235-aad4-a29186309c02@k10g2000prm.googlegroups.com

"Adam Beneschan" <adam@irvine.com> wrote in message
news:2cc577f4-704a-4235-aad4-a29186309c02@k10g2000prm.googlegroups.com...
> On Apr 30, 12:15 am, Maciej Sobczak <see.my.homep...@gmail.com> wrote:
...
> > Anonymous access types are used by Ada.Containers for iteration (among
> > others). "Rationale" by Barnes presents some nice examples with
> > downward closures as well.
>
> I suspect that Randy was talking only about anonymous access-to-object
> parameters.  Those aren't used by the language's definition of
> Ada.Containers, or at least I didn't spot any.
>
> Anonymous access-to-subprogram parameters (which Ada.Containers does
> use) are a different animal altogether.  They do serve a legitimate
> purpose; downward closures are important but couldn't be done
> satisfactorily in Ada 95.

I agree with this, although the syntax is rotten.
Anonymous-access-to-subprogram parameters have special semantics and cannot
be stored (you'll get an accessibility error if you try). So they act like
parameters that are subprograms rather than an access type. I think the
syntax is rotten because these are access types only in the sense that a
compiler will implement them this way.

I do include regular anonymous-access-to-subprogram types in the category of
useless features.

And I do plead guilty to not opposing the expansion of this misfeature in
the Amendment hard enough. I was temporarily swayed by arguments that they
would allow using far fewer useless type conversions. The problem is that in
practice it is not true: you still need type conversions unless you purge
all of your named access types from the program. But then you lose the
ability to have storage pools -- a nasty trade-off. Essentially, they don't
provide the feature that was advertised, and thus should never have been
approved.

Beyond that, I agree with Dmitry that Ada needs a real iterator construct;
passing a subprogram into another subprogram is much less understandable
than
     for Element in Container loop
         ...
     end loop;

And that would eliminate much of the need for "downward closures". (But not
all! I don't want to get into a silly argument about that...)

                              Randy.





  parent reply	other threads:[~2008-04-30 23:40 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-29 13:55 Access keyword Sébastien
2008-04-29 14:35 ` Peter Hermann
2008-04-29 14:43 ` Ludovic Brenta
2008-04-29 15:16 ` stefan-lucks
2008-04-29 16:31   ` Sébastien
2008-04-29 19:55     ` Gautier
2008-04-30 14:26       ` Sébastien
2008-04-30 17:13         ` Gautier
2008-04-30 20:44         ` Ludovic Brenta
2008-04-29 17:37 ` Adam Beneschan
2008-04-29 19:08 ` Jeffrey R. Carter
2008-04-29 21:03 ` Maciej Sobczak
2008-04-29 21:32 ` Randy Brukardt
2008-04-30  4:36   ` Gautier
2008-04-30  7:15   ` Maciej Sobczak
2008-04-30  7:56     ` Dmitry A. Kazakov
2008-04-30  9:21     ` Georg Bauhaus
2008-04-30 15:16     ` Adam Beneschan
2008-04-30 15:20     ` Adam Beneschan
2008-04-30 21:32       ` Maciej Sobczak
2008-04-30 21:58         ` Adam Beneschan
2008-05-01  1:10         ` Adam Beneschan
2008-04-30 23:40       ` Randy Brukardt [this message]
2008-04-30 14:32   ` Sébastien
replies disabled

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