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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED.3d73Ybk3C5U4I2t8lv+lAQ.user.gioia.aioe.org!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Type naming conventions: Any_Foo Date: Fri, 6 Dec 2019 21:35:43 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: 3d73Ybk3C5U4I2t8lv+lAQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader01.eternal-september.org comp.lang.ada:57675 Date: 2019-12-06T21:35:43+01:00 List-Id: 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. >> 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