comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adambeneschan@gmail.com>
Subject: Re: Integers and Mathematical Correctness
Date: Fri, 26 Sep 2014 10:51:07 -0700 (PDT)
Date: 2014-09-26T10:51:07-07:00	[thread overview]
Message-ID: <e77a7c4b-8bf3-4da7-bcc9-ed9eb28b5c3a@googlegroups.com> (raw)
In-Reply-To: <98f0066e-4b5c-4b00-b811-dcbb13ed0fcf@googlegroups.com>

On Friday, September 26, 2014 9:59:00 AM UTC-7, AdaMagica wrote:
> On Friday, September 26, 2014 6:38:10 PM UTC+2, Niklas Holsti wrote:
 
> > False. Ada can overload operators on the result type, so you can very 
> > well add
> >
> >    function "/" (Left, Right : Integer) return Rational;
> 
> > and have both"/" visible and used with in-fix notation.
>
> Nah, it's not that easy. The reason is that Integer is defined in Standard, which always has precedence for any use-clause.

The precedence of use clauses is irrelevant.  This (and other rules about visibility and hiding) are used when there are two homographs and the compiler needs to decide which one is meant.  Thus, if you have a type "Integer" defined in Standard, and a type "Integer" defined in some USE'd package, I think the one in Standard would hide the other one, as you say.

However, functions are homographs only if they have the same name, same parameter types, and same return type.  Thus, the function

   function "/" (Left, Right : Integer) return Integer;

defined in Standard cannot hide the function

   function "/" (Left, Right : Integer) return Rational;

defined somewhere else.  The compiler uses the overloading rules, not the USE rules or any such visibility rules, to determine which one is meant.  So if use use / in a context where the result is Rational, it will work fine--the definition in Standard cannot hide it.  If you use it in a context where the compiler can't tell which one is meant, the expression is ambiguous--the rules about USE clauses and such will not help to make it unambiguous.
 
 
> You need a separate integer type
> 
>   type Whole is range ...
>   function "/" (Left, Right: Whole) return Rational;

No, this is not necessary.  Unless the compiler is faulty.

                             -- Adam


  reply	other threads:[~2014-09-26 17:51 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-31 20:27 Integers and Mathematical Correctness chris.danx
2001-10-31 21:21 ` David C. Hoos
2001-10-31 22:16   ` chris.danx
2001-10-31 22:47     ` David C. Hoos
2001-10-31 22:55       ` chris.danx
2001-10-31 23:16         ` Matthew Heaney
2001-10-31 21:42 ` Mark Johnson
2001-11-01 18:57   ` Mark Johnson
2001-11-01 14:32 ` Wes Groleau
2001-11-01 16:18   ` wilhelm.spickermann
2001-11-01 16:48   ` chris.danx
2001-11-01 15:45 ` Charles Sampson
2001-11-01 16:20   ` Marin David Condic
2001-11-03 17:02     ` Richard Riehle
2001-11-05 14:47       ` Marin David Condic
2001-11-06  3:53         ` Eric G. Miller
2001-11-06  4:28           ` James Rogers
2001-11-06  6:06             ` peter
2001-11-06 14:48               ` James Rogers
2001-11-06 15:54                 ` Marin David Condic
2001-11-07  3:44             ` Eric G. Miller
2001-11-01 17:10   ` chris.danx
2001-11-01 17:52     ` Chad Robert Meiners
2001-11-01 19:02       ` chris.danx
2001-11-01 17:57     ` Wes Groleau
2001-11-03 14:57     ` Charles Sampson
2001-11-01 16:11 ` Charles Lindsey
2001-11-01 18:40   ` Wilhelm Spickermann
2001-11-01 19:18   ` chris.danx
2001-11-02  1:37     ` Steven Deller
2014-09-26  9:07       ` vincent.diemunsch
2014-09-26 16:38         ` Niklas Holsti
2014-09-26 16:58           ` AdaMagica
2014-09-26 17:51             ` Adam Beneschan [this message]
2014-09-27  9:01               ` AdaMagica
2014-09-27 10:15                 ` AdaMagica
2014-09-27 16:32                 ` Niklas Holsti
2014-09-27 16:49                   ` Jeffrey Carter
2014-09-27 18:52                     ` Niklas Holsti
2014-09-27 18:54                   ` Adam Beneschan
2014-09-27 19:07                     ` Adam Beneschan
     [not found]                 ` <3489504a-f82b-4fec-8a6c-7cb91854dd1e@googlegroups.com>
2014-09-27 19:21                   ` AdaMagica
2014-09-27 11:44           ` gautier_niouzes
2014-09-26 16:41         ` Adam Beneschan
2014-09-26 16:46         ` Adam Beneschan
2014-09-27 15:21           ` vincent.diemunsch
     [not found]             ` <34da5a39-9fa3-4e8e-a3f9-98f61a4ebcc7@googlegroups.com>
2014-09-28  7:47               ` Dmitry A. Kazakov
2014-09-29 14:58                 ` Adam Beneschan
2014-09-29 16:25                   ` Dmitry A. Kazakov
2014-10-01 19:48                   ` vincent.diemunsch
2014-10-02 11:10                     ` G.B.
2001-11-01 18:08 ` Tucker Taft
2001-11-01 18:54 ` David Starner
2001-11-01 21:44   ` Wilhelm Spickermann
2001-11-02 12:52 ` chris.danx
  -- strict thread matches above, loose matches on Subject: below --
2001-10-31 22:42 Beard, Frank
replies disabled

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