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 22:34:13 +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:61214 List-Id: On 2021-01-26 21:04, Shark8 wrote: > On Tuesday, January 26, 2021 at 12:44:45 PM UTC-7, Dmitry A. Kazakov wrote: >> Instantiation errors nobody can really predict. On top of that is >> uncontrollable name space pollution. > I submitted an AI that solves a lot of the pollution: > http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0268-1.txt?rev=1.3&raw=N Well, it would have only limited use. The case you present is rather solved by using child generics as they "inherit" parameters. So generic package Generic_Swap.Generic_Stack is And here we come to the real-world problem. Generic packages and their formal parameters are organized in a directed acyclic graph like: A D / \ /| B C | \ / | E | \ / F rather than a tree. You want to instantiate the whole graph in a single shot. You do not want to manually specify constraints on generic formal parameters when some of them travel by several paths as D into F. BTW, observe similarity with diamond/rhombus MI. That MI has some problems generics do not have is a big lie. But in my view generics are beyond salvation. The idea is inherently weakly typed. Ada's generic contracts are too loose to be safe and too rigid for usability of C++ templates. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de