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=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,f37364fd74b84042 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "(see below)" Newsgroups: comp.lang.ada Subject: Re: Child Package Operator Visibility Date: Mon, 07 Apr 2008 18:30:40 +0100 Message-ID: References: <6b08d1d0-1896-4951-8528-e11bef196dd7@1g2000prf.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Trace: individual.net vyxt1dTtVUm+I9qhzUee3w6JvLZuCqhps+OCSqrDvJV4nEXb+r Cancel-Lock: sha1:ocHi6TYI1burD1ffox63BIUIVzc= User-Agent: Microsoft-Entourage/12.1.0.080305 Thread-Topic: Child Package Operator Visibility Thread-Index: AciY1RlNCrQcpBmrK0uO2UzGBuKW8A== Xref: g2news1.google.com comp.lang.ada:20869 Date: 2008-04-07T18:30:40+01:00 List-Id: On 07/04/2008 16:03, in article 6b08d1d0-1896-4951-8528-e11bef196dd7@1g2000prf.googlegroups.com, "Adam Beneschan" wrote: > On Apr 5, 7:19 am, "(see below)" wrote: >> On 05/04/2008 15:03, in article >> L-udnRBPxNSpGWranZ2dnUVZ_gKdn...@comcast.com, "pakman" >> >> wrote: >>> Recently, in the process of illustrating Ada 95 child packages in a course I >>> teach, I implemented the Fractions.Comparisons package from N. Cohen's Ada >>> as a Second Language, 2nd ed text. In the test program, I withed the >>> Fractions and Fractions.Comparisons packages, and then specified the use >>> type Fractions.Fraction_Type for direct visibility of the Fractions package >>> operators. I was surprised that the Fractions.Comparisons package operators >>> were not directly visible (that is, I was not able to test for A < B). To >>> make the example work, I added the use Fractions.Comparisons statement. >> >>> So, my questions are: 1) Why didn't the use type work for the >>> Fractions.Comparisons operators, and 2) how do I make the operators directly >>> visible? >> >> (1) Because the operations in Fractions.Comparisons are not primitive >> operations of the fraction type. >> >> (2) Redesign the package structure (abolish Fractions.Comparisons) so that >> the comparisons are primitive. > > Or just "use Fractions.Comparisons"? I don't actually have this book, > so I'm just making a guess as what might work. That is what the OP seemed to want to avoid, but sure, it's not a big deal. However, I see no plausible reason for the comparison operations being segregated from their comparand type in a child package. As it happens I have a rationals package of my own and it has two children, but the parent contains all of the type-defining operations. The children are (a) an I/O package and (b) a combinatorics package. Neither should be forced on users of the rational arithmetic facilities. > In fact, this sort of thing is an idiom I used to use a lot, before > Ada 95 gave us "use type". I would declare a package with the types I > wanted to declare, and then define a nested package Operators which > redefined all the operator symbols on those types using renaming, so > that another package could say "use Pkg.Operators" without having to > "use Pkg" which would make too much visible. "use Pkg" really shouldn't do that if Pkg is well designed. -- Bill Findlay chez blueyonder.co.uk