From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Simple example on interfaces Date: Tue, 26 Jan 2021 20:44:43 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <9e1b5d67-be08-4f53-aadc-fbed761a8c24n@googlegroups.com> <6e343937-3590-4944-8c38-10b61014e128n@googlegroups.com> NNTP-Posting-Host: 5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61212 List-Id: On 2021-01-26 17:46, AdaMagica wrote: > Dmitry A. Kazakov schrieb am Dienstag, 26. Januar 2021 um 12:53:25 UTC+1: >> The problem with generics (static polymorphism which also includes >> overloading) is that they answer no to the last question. There cannot >> be same program because there is no class-wide (polymorphic) objects >> from the generics' class. > > universal_integer being something like class of all integers, this would be: Maybe class, maybe parent (cloned upon type X is new Y constructs). > generic > type T is range <>; > procedure F (X: T); > > is replaced by the classwide > > procedure F (X: universal_integer); -- not Ada Or, maybe procedure F (X: universal_integer'Class); -- not Ada > universal_integer is anonymous and doesn't have any operations (except automatic conversion). Yes. In a never ending discussion with Randy I insist that this stuff should be made explicit, available for any types. >> P.S. Comparing generics to overloading, generics offer some re-use, and >> some degree of formalization at the cost of producing huge mess, while >> overloading does none. > > I know you don't like generics. I do not see a huge mess. When something goes wrong it is almost impossible to figure what. Contracts are mostly implicit. They are not enforced upon compilation. Instantiation errors nobody can really predict. On top of that is uncontrollable name space pollution. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de