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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,c02604a46964120 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news1.google.com!news.glorb.com!newsfeed2.telusplanet.net!newsfeed.telus.net!edtnps82.POSTED!7564ea0f!not-for-mail Newsgroups: comp.lang.ada From: Duke Normandin Subject: Re: Noob question: universal_integer type References: <85pemlFod9U1@mid.individual.net> <7DQJn.4466$Z6.1110@edtnps82> User-Agent: slrn/0.9.8.1 (Darwin) Message-ID: Date: Sat, 22 May 2010 14:51:57 GMT NNTP-Posting-Host: 75.154.122.116 X-Trace: edtnps82 1274539917 75.154.122.116 (Sat, 22 May 2010 08:51:57 MDT) NNTP-Posting-Date: Sat, 22 May 2010 08:51:57 MDT Xref: g2news2.google.com comp.lang.ada:11885 Date: 2010-05-22T14:51:57+00:00 List-Id: On 2010-05-22, Dmitry A. Kazakov wrote: > On Sat, 22 May 2010 13:04:03 GMT, Duke Normandin wrote: > >> On 2010-05-22, Niklas Holsti wrote: > >>> Perhaps it is also worth mentioning that Ada does have a way of >>> explicitly indicating the type to be chosen for a literal, by >>> "qualifying" it with a type name. This can be necessary to resolve >>> overloaded operation names. For example, assume that you define two >>> integer types: >>> >>> type Apples is range 0 .. 20; >>> type Ants is range 0 .. 1_000_000; >>> >>> and then define a procedure "Eat" for each type, with different content >>> for eating apples and for eating ants: >>> >>> procedure Eat (Items : Apples) ... end Eat; >>> >>> procedure Eat (Items : Ants) ... end Eat; >>> >>> A call of Eat with a literal parameter, for example Eat (17), is then >>> ambiguous (and the compiler will tell you so). To show if you are eating >>> apples or ants, you qualify the literal with the type name and an >>> apostrophe, as in >>> >>> Eat (Apples'(17)); >>> >>> for eating 17 apples, or >>> >>> Eat (Ants'(17)) >>> >>> for eating 17 ants. Since the type of the parameter is now explicit, the >>> compiler knows which procedure Eat is to be called. >> >> I love it! and the compiler would choke with an "out of bounds" exception if >> you called Eat (Apples'(25)); - if I understand the Coronado tutorial >> correctly. Thanks for the input... > > Yes, the Constraint_Error exception. But note, this is OK: > > Eat (Apples'(25 - 10)); > > This is another reason behind universal types. You can perform computations > on them ignoring constraints of the particular type. > Cool! [side-bar] All is well with Ada and I - I just discovered Emacs ada-mode, and Stephen Leake's Emacs ada-mode homepage. Now I'm somewhat on familiar territory. With Emacs and Ada, we should be able to "kick butt" ;) -- Duke *** Tolerance becomes a crime, when applied to evil [Thomas Mann] ***