comp.lang.ada
 help / color / mirror / Atom feed
From: Duke Normandin <dukeofperl@ml1.net>
Subject: Re: Noob question: universal_integer type
Date: Sat, 22 May 2010 14:51:57 GMT
Date: 2010-05-22T14:51:57+00:00	[thread overview]
Message-ID: <hcSJn.4476$Z6.2847@edtnps82> (raw)
In-Reply-To: lojvpm92tk66.jhp2xd8ne6ag$.dlg@40tude.net

On 2010-05-22, Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
> On Sat, 22 May 2010 13:04:03 GMT, Duke Normandin wrote:
>
>> On 2010-05-22, Niklas Holsti <niklas.holsti@tidorum.invalid> 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] *** 




  reply	other threads:[~2010-05-22 14:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-21 23:15 Noob question: universal_integer type Duke Normandin
2010-05-21 23:33 ` Yannick Duchêne (Hibou57)
2010-05-21 23:34   ` Yannick Duchêne (Hibou57)
2010-05-21 23:37 ` Jeffrey R. Carter
2010-05-22  2:04   ` Duke Normandin
2010-05-22  7:16   ` Niklas Holsti
2010-05-22 13:04     ` Duke Normandin
2010-05-22 13:47       ` Dmitry A. Kazakov
2010-05-22 14:51         ` Duke Normandin [this message]
2010-05-22 20:08       ` Yannick Duchêne (Hibou57)
2010-05-23  2:28         ` Duke Normandin
2010-05-23  2:36           ` Yannick Duchêne (Hibou57)
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox