From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Type naming conventions: Any_Foo
Date: Fri, 6 Dec 2019 18:57:19 -0600
Date: 2019-12-06T18:57:19-06:00 [thread overview]
Message-ID: <qsetdf$2rm$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: qsee2v$par$1@gioia.aioe.org
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:qsee2v$par$1@gioia.aioe.org...
> On 2019-12-06 21:18, Jeffrey R. Carter wrote:
>> On 12/5/19 10:51 PM, Dmitry A. Kazakov wrote:
>>>
>>> Ada standard library uses _Type, e.g.
>>>
>>> generic
>>> type Element_Type (<>) is private;
>>> with function "=" (Left, Right : Element_Type) return Boolean is <>;
>>> package Ada.Containers.Indefinite_Holders
>>
>> Yes, and the ARM also includes such abominations as anonymous access
>> types. Just because it's in the ARM doesn't mean it's the best way to do
>> something. Element is be a better name for that formal type.
>
> No, it would be misleading. Element must be reserved for instances of the
> type. They are actual elements. The type of an element is not an element,
> these are two totally different things.
Agreed. Ada.Containers all have a function Element that retrieves a (copy
of) a single element object from the container. If the type was named
element, what would this function be called? Similarly, some of the
parameters are called Element (thus, Element : Element_Type in many
parameter lists); those also would need alternate names.
There were a number of ARG members that disliked the "_Type" notation, so we
looked at alternatives. And we didn't find anything that worked as well.
Sometimes, package design is about the "least bad" alternative.
Randy.
>>> There are lots of cases in Ada, you certainly should know that. As a
>>> practical example GtkAda declares all widget types twice:
>>>
>>> type Gtk_Button_Record is ...
>>> type Gtk_Button is access all Gtk_Button_Record'Class;
>>
>> No well designed library has public access types. You aren't required to
>> use a library that does, and you aren't required to use access types.
>
> I am required to. There must be always be two types in a GUI, one
> referential type and one implementation type. The widget implementation
> object in GtkAda is Gtk_Button_Record. The widget referential object is
> Gtk_Button. It could be a handle or a smart pointer type instead of plain
> pointer, but there is no way to reduce it to a single type. So the problem
> will persist.
>
> --
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2019-12-07 0:57 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-04 13:56 Type naming conventions: Any_Foo Alejandro R. Mosteo
2019-12-04 14:52 ` Lucretia
2019-12-04 16:42 ` Alejandro R. Mosteo
2019-12-05 10:51 ` AdaMagica
2019-12-05 17:27 ` Jeffrey R. Carter
2019-12-05 17:45 ` Dmitry A. Kazakov
2019-12-05 20:03 ` Jeffrey R. Carter
2019-12-05 21:51 ` Dmitry A. Kazakov
2019-12-05 23:12 ` Randy Brukardt
2019-12-06 20:20 ` Jeffrey R. Carter
2019-12-07 1:19 ` Randy Brukardt
2019-12-06 20:18 ` Jeffrey R. Carter
2019-12-06 20:35 ` Dmitry A. Kazakov
2019-12-07 0:57 ` Randy Brukardt [this message]
2019-12-07 10:28 ` Jeffrey R. Carter
2019-12-07 12:36 ` Niklas Holsti
2019-12-08 12:04 ` Jeffrey R. Carter
2019-12-07 10:13 ` Jeffrey R. Carter
2019-12-07 11:21 ` Dmitry A. Kazakov
2019-12-08 11:55 ` Jeffrey R. Carter
2019-12-08 12:38 ` Dmitry A. Kazakov
2019-12-08 14:31 ` Shark8
2019-12-08 21:58 ` Jeffrey R. Carter
2019-12-09 22:47 ` Shark8
2019-12-07 23:24 ` Jere
2019-12-08 12:14 ` Jeffrey R. Carter
2019-12-09 22:07 ` Randy Brukardt
2019-12-05 19:49 ` Niklas Holsti
2019-12-05 20:47 ` Jeffrey R. Carter
2019-12-05 21:33 ` Niklas Holsti
2019-12-06 11:44 ` Lucretia
2019-12-06 20:23 ` Jeffrey R. Carter
2019-12-06 20:11 ` Jeffrey R. Carter
2019-12-06 20:46 ` Dmitry A. Kazakov
2019-12-06 21:55 ` Niklas Holsti
2019-12-07 10:19 ` Jeffrey R. Carter
2019-12-07 12:05 ` Niklas Holsti
2019-12-08 11:59 ` Jeffrey R. Carter
2019-12-06 8:57 ` AdaMagica
2019-12-06 9:55 ` J-P. Rosen
2019-12-06 15:30 ` Optikos
2019-12-07 3:34 ` Shark8
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox