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.
next prev 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